首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react测试库中模拟web工作人员的测试?

问如何在react测试库中模拟web工作人员的测试?
EN

Stack Overflow用户
提问于 2021-10-03 16:38:19
回答 1查看 1.7K关注 0票数 3

我正在创建一个这样的网络工作者:

代码语言:javascript
复制
const getWebWorker = () => {
  let worker;
  if (typeof worker === 'undefined') {
    worker = new Worker('worker.js');
  }
  return worker;
};

然后我就这样调用这个函数:

代码语言:javascript
复制
useEffect(() => {
  getWebWorker().onmessage = (event) => {
    setWorkerData(event.data);
  };
}, []);

实际的worker.js文件位于公用文件夹下,postMessage是一个对象。

我正在使用react测试库/jest进行测试。当我运行yarn run test时,我在worker = new Worker('worker.js');上得到了错误ReferenceError: Worker is not defined。

我知道我需要嘲笑这个工人,我只是困惑于如何。

如何命名__mock__文件夹中的模拟文件?

嘲笑工人会是什么样子?

在____.test.js文件中有什么我必须做的吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-01-24 14:04:25

不被jest支持的Afaik。网络工作者是浏览器的东西。使用e2e测试代替。

代码语言:javascript
复制
if (typeof(Worker) !== "undefined") {
  alert("Your have web worker support! (Webbrowser)")
} else {
  console.warn("You have no web worker support (node)")
}

Jest默认使用JSDOM环境,这意味着它不支持Worker。这意味着不可能测试同时需要NodeJS功能和Workers的代码。jsdom-工人

jsdom-工人试图让网络工作者来开玩笑,但自2020年以来就没有任何更新,而且似乎没有得到维护。顺便说一下,有一个被标记为实验性的分拆。

我也有同样的问题,我用e2e测试剧作家来处理涉及到网络工作者的事情,因为我没有找到任何现成的方法来模拟工作人员。

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

https://stackoverflow.com/questions/69426865

复制
相关文章

相似问题

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