首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自导入的NPM模块的Worker导致jest测试失败

来自导入的NPM模块的Worker导致jest测试失败
EN

Stack Overflow用户
提问于 2019-10-08 23:29:42
回答 2查看 655关注 0票数 1

我安装了browser-image-compression,作为其功能的一部分,它创建了一个Worker。现在,当我运行jest测试时,我得到以下错误:

代码语言:javascript
复制
Test suite failed to run

ReferenceError: Worker is not defined

没有连接到使用浏览器图像压缩的函数的测试。

package.json中的脚本部分包含以下两行

代码语言:javascript
复制
"test": "react-scripts test",
"test:ci": "cross-env CI=true react-scripts test"

哦,我还有一个用来设置测试的文件。我是不是应该嘲笑这里的工人?

代码语言:javascript
复制
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import '@domain/yup';

configure({
  adapter: new Adapter()
});

global.fetch = require('jest-fetch-mock');
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-30 01:17:26

对这个问题的回应很晚,但它可以帮助其他人--但遵循这个comment帮助我解决了这个问题。

如果您将以下内容添加到它自己的文件中-我的文件与名为workerMock.jssetupTests文件位于相同的dir

代码语言:javascript
复制
export default class Worker {
  constructor(stringUrl) {
    this.url = stringUrl;
    this.onmessage = () => {};
  }

  postMessage(msg) {
    this.onmessage(msg);
  }
}

然后将该Worker文件导入到您的测试设置文件中并添加window.Worker = Worker。设置文件可能如下所示:

代码语言:javascript
复制
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import '@domain/yup';

import Worker from 'path-to-your-worker-file-above';

configure({
  adapter: new Adapter()
});

global.fetch = require('jest-fetch-mock');

window.Worker = Worker;

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2020-05-12 14:55:57

一个更好的解决方案是更新‘浏览器-图像-压缩’包到最新版本,这对我很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58289542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档