我正在创建一个这样的网络工作者:
const getWebWorker = () => {
let worker;
if (typeof worker === 'undefined') {
worker = new Worker('worker.js');
}
return worker;
};然后我就这样调用这个函数:
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文件中有什么我必须做的吗?
谢谢
发布于 2022-01-24 14:04:25
不被jest支持的Afaik。网络工作者是浏览器的东西。使用e2e测试代替。
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测试剧作家来处理涉及到网络工作者的事情,因为我没有找到任何现成的方法来模拟工作人员。
https://stackoverflow.com/questions/69426865
复制相似问题