簡體   English   中英

如何在反應測試庫中模擬網絡工作者進行測試?

[英]How to mock web worker for testing in react testing library?

我正在創建一個這樣的網絡工作者:

const getWebWorker = () => {
  let worker;
  if (typeof worker === 'undefined') {
    worker = new Worker('worker.js');
  }
  return worker;
};

然后我這樣調用函數:

useEffect(() => {
  getWebWorker().onmessage = (event) => {
    setWorkerData(event.data);
  };
}, []);

實際上 worker.js 文件位於 public 文件夾下,而 postMessage 是一個對象。

我正在使用 react 測試庫/jest 進行測試。 當我運行yarn run test我得到錯誤ReferenceError: Worker is not defined at worker = new Worker('worker.js'); .

我知道我需要嘲笑工人,我只是對如何去做感到困惑。

我在__mock__文件夾中命名模擬文件是什么?

嘲笑工人會是什么樣子?

____.test.js 文件中有什么我必須做的嗎?

謝謝

Jest 默認使用 JSDOM 環境,這意味着它不支持 Workers。 這意味着無法測試同時需要 NodeJS 功能和 Web Workers 的代碼。 jsdom-worker

jsdom-worker試圖讓網絡工作者開玩笑,但自 2020 年以來沒有更新,而且似乎沒有維護......順便說一句,有一個被標記為實驗性的衍生產品。

我有同樣的問題,並結束了使用playwright的 e2e 測試來測試涉及網絡工作者的事物。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM