Gur*_*bot 8 javascript reactjs jestjs redux-toolkit msw
我正在为使用 Redux Toolkit 的 Next.js 应用程序运行笑话测试套件。我使用 msw 来模拟对由 Redux Toolkit 处理的 Next 应用程序之外的另一个 api 的任何必要调用。
我没有模拟所有 RTK 查询端点,仅模拟我当前在测试中使用的那些。
当我在没有通过 生成覆盖范围的情况下运行时,测试运行良好npm run test。
但是,当我通过 运行覆盖率报告时npm run test -- --coverage,所有测试都会失败,并且都有相同的错误:
- Test suite failed to run
No element indexed by 9
at ArraySet_at [as at] (node_modules/source-map-support/node_modules/source-map/lib/array-set.js:109:9)
at BasicSourceMapConsumer.SourceMapConsumer_originalPositionFor [as originalPositionFor] (node_modules/source-map-support/node_modules/source-map/lib/source-map-consumer.js:673:30)
at mapSourcePosition (node_modules/source-map-support/source-map-support.js:214:42)
at wrapCallSite (node_modules/source-map-support/source-map-support.js:358:20)
at node_modules/source-map-support/source-map-support.js:399:26
at Array.map (<anonymous>)
at Function.prepareStackTrace (node_modules/source-map-support/source-map-support.js:398:30)
Run Code Online (Sandbox Code Playgroud)
我发现如果将 msw 处理程序设置为空数组,则不会出现错误。正如预期的那样,少数需要 API 的测试失败了。然而,除此之外,测试都运行良好。
我不确定从这里该去哪里。任何意见是极大的赞赏。
如果您仍然遇到此问题,请将 Jest 升级到最新版本。
这个问题似乎与使用 babel 作为代码覆盖率提供程序有关。这就是为什么切换到v8 可以解决这个问题。
如果您不想使用 v8(当前标记为实验性)。然后你需要将 babel 安装到你的构建中:
npm install --save-dev babel-jest @babel/core @babel/preset-env
Run Code Online (Sandbox Code Playgroud)
这应该会使上述错误消失。
小智 4
我遇到了几乎相同的问题,但我的案例错误消息是No element indexed by 55。我正在使用 Jest,如果在一个测试中我期望对象不具有某些属性,则会出现此错误。
然后我关闭了代码覆盖率,问题消失了,测试也通过了。但我不想为此关闭它。
最后,对我来说唯一的解决方案是将jest 配置中的coverageProvider更改为v8(默认情况下它使用babel)。