reactjs Jest测试:没有定义Worker,而且Worker不是构造函数

mqkwyuun  于 2023-04-20  发布在  React
关注(0)|答案(1)|浏览(216)

我目前正在开发一个crm应用程序,它有Ant Design图表在里面。我试图测试一个馅饼的从Ant Design图表,但当我运行“npm运行测试”一个错误发生:

Test suite failed to run

    TypeError: URL.createObjectURL is not a function

     >  7 | import { Pie } from '@ant-design/plots'

我通过在testSetupFile.js中添加代码行来修复此错误,代码行为:

Object.defineProperty(URL, 'createObjectURL', {
 writable: true,
 value: jest.fn(),
 })

在这个之后,我开始得到一个新的错误:

● Test suite failed to run

    ReferenceError: Worker is not defined

最后,我修复了这个错误,通过创建一个随机的工人和错误变成“工人不是一个构造函数”
file.test.js:

import '@testing-library/jest-dom'
     >  7 | import PageThatContainsPie from './PageThatContainsPie'

describe('Pie Test', () => {
  test('it should mount', () => {
    const { container } = render(<PageThatContainsPie />)
  })
})

我只是想测试它是否得到渲染或不...
我也试过在jsdom-worker上添加packagejs。

s8vozzvw

s8vozzvw1#

将以下内容添加到我的setupTests.ts文件中为我修复了它:

window.URL.createObjectURL = function () {
  return "";
};
if (typeof Worker === "undefined") {
  global.Worker = class {
    addEventListener() {}

    removeEventListener() {}

    dispatchEvent() {
      return false;
    }

    onmessage() {}

    onmessageerror() {}

    onerror() {}

    postMessage() {}

    terminate() {}
  };
}

相关问题