0

I am trying to write unit tests for an Angular web application. Please note I am very, very new to web development.

One of the Services, ProcessorService uses pyodide to run python code.

I want to check if that python code manipulates a data set correctly, and outputs the resulting data set.

However, I am getting this error when running the unit test:

Unhandled promise rejection: Error: Failed to load 'http://localhost:9876/_karma_webpack_/webpack:/node_modules/pyodide/pyodide_py.tar': request failed.

This is my beforeEach() call

  describe('ProcessorService', () => {

   
    let errorHandler = new ErrorHandlerService();
    let sample = new SampleDataService();
    let http: HttpClient;
    const graph = new GraphService(sample, http);

    let process: ProcessorService;

    beforeEach(async() => {
        
       TestBed.configureTestingModule({
        imports:[
          HttpClientTestingModule,
          
        ],
        providers: [
          GraphService, 
          ErrorHandlerService, 
          SampleDataService,
          ProcessorService,
          loadPyodide,
        ],
       });
    });

This is the test I am trying to run:

     it('Test if ... Selected process runs on dataset',async()=>{
      let service = new ProcessorService(http, errorHandler, graph);
      const PYODIDE_BASE_URL = 'https://cdn.jsdelivr.net/pyodide/v0.22.0/full/';

      let testDataSet: Dataset = {
        contactPoint: null,
        displacementForceData : [],
        displacementForceFilteredData: [],
        indentationForceData: [],
        elspectraData : [],
        testData: [],
      };

      let testDataConverted: any = service.convertXAndYArrayToDatapointsArray(testData);
      if (typeof (testDataConverted) == 'object' && testDataConverted.error)
      {
        fail('Data conversion failed.');
      }
      testDataSet.testData = testDataConverted;
      let outDataConverted: any = service.convertXAndYArrayToDatapointsArray(outData);
      service.addProcess(testProcess);
      service.selectedTests = [testProcess];

      console.log("wait for pyodide now....")
      const pyodide = await loadPyodide()
      service.runFrom(EProcType.TEST, [testDataSet]);

      expect(service.testOutDatasets[0].testData).toEqual(outDataConverted);
     });

I have tried importing pyodide in the .spec.ts file itself, but I am unsure about what to do. There is no documentation I could find on my issue. Thank you.

I expect to be able to run a unit test using Jasmine in a fucntion that uses pyodide, but I am unsure if it is even possible.

AlexM
  • 1
  • 1

0 Answers0