在 webworker 上使用开玩笑错误测试 redux/react

Testing redux/react with jest erroring on webworker

我正在使用 React 脚本,其中包括对我的 redux 模型进行 运行 测试的笑话(尚未使用太多反应,仍在构建数据。

我使用网络工作者通过 ajax 请求获取数据。

当我 运行 我的测试时,Reference Error: Worker is not defined

我已经尝试安装一个 worker npm 库并将其作为一个全局项包含在我的 test.spec 文件中 import * as global.Worker from "webworker",但这不包括我的测试中的 webworker。

我想避免将 webworker 包含在我的源代码中,因为浏览器不需要它,但我希望它用于测试,或者如果我不测试 worker 代码,至少有我的测试没有出错,因为文件中引用了工作人员。

我不熟悉 react-scripts,但我会这样说:

1) 单元测试不应该测试甚至 运行 外部资源(如 webworker)——隔离是单元测试的关键

2) redux 代码,特别是 reducer 不应该依赖或执行依赖于外部资源或状态的代码 - 它们应该是 pure

您没有提供任何代码示例,因此我对问题的根源做了很多假设。

一个问题:你提到了 "redux model" ,这是否与 redux-orm 之类的东西有关,或者只是你如何称呼你的减速器

无论如何,作为第一步,我建议您将调用 Web Worker(或任何外部资源)的代码移动到一个单独的文件中,然后将其导入您的 reducer/model。这样你就可以轻松 mock 并避免 运行 它。这使您可以控制它提供的响应,而无需实际进行外部调用。

作为一项长期建议,我建议您研究 redux-thunk or redux-saga 之类的东西来进行异步工作。