测试redux /与webworker上的jest错误做出反应

时间:2017-01-18 05:17:48

标签: global-variables jestjs

我正在使用React-scripts,其中包括在我的redux模型上运行测试的jest(还没有使用太多反应,仍在构建数据。

我使用webworker通过ajax请求获取数据。

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

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

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

1 个答案:

答案 0 :(得分:1)

我不熟悉react脚本,不过我会说:

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

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

你还没有提供任何代码示例,所以我对你的问题来源做了很多假设。

一个问题:你提到过“redux模型”,这与redux-orm或者你如何称呼你的减速器有关

在任何情况下,作为第一步,我建议您将调用Web worker(或任何外部资源)的代码移动到单独的文件中,并将其导入reducer / model中。通过这种方式,您可以轻松地mock并避免运行它。这使您可以控制它提供的响应,而无需实际拨打外线电话。

作为一项长期建议,我建议您调查类似redux-thunkredux-saga的内容,以便与您进行异步工作。