我正在使用React-scripts,其中包括在我的redux模型上运行测试的jest(还没有使用太多反应,仍在构建数据。
我使用webworker通过ajax请求获取数据。
当我运行测试时,Reference Error: Worker is not defined
。
我已经尝试安装一个worker npm库,并将其作为global.spec文件中的全局包含
import * as global.Worker from "webworker"
,但这不包括我的测试中的网络工程师。
我想避免将webworker包含在我的源代码中,因为它在浏览器中不需要,但我希望它可以用于测试,或者如果我不测试工作代码,至少我的测试没有错误输出,因为文件中引用了worker。
答案 0 :(得分:1)
我不熟悉react脚本,不过我会说:
1)单元测试不应该测试甚至运行外部资源(如webworker) - 隔离是单元测试的关键
2)redux代码,特别是reducer不应该依赖或执行依赖于外部资源或状态的代码 - 它们应该是pure
你还没有提供任何代码示例,所以我对你的问题来源做了很多假设。
一个问题:你提到过“redux模型”,这与redux-orm或者你如何称呼你的减速器有关
在任何情况下,作为第一步,我建议您将调用Web worker(或任何外部资源)的代码移动到单独的文件中,并将其导入reducer / model中。通过这种方式,您可以轻松地mock并避免运行它。这使您可以控制它提供的响应,而无需实际拨打外线电话。
作为一项长期建议,我建议您调查类似redux-thunk或redux-saga的内容,以便与您进行异步工作。