在升级 jest 后,从 React 16 升级到 17 并从
react-testing-library
切换到 enzyme
,当我正常运行时,我所有的前端测试都通过了,但是 6(超过 50 个)套件仅在我运行时失败启用 --coverage
的测试。在某些情况下,我能够调整测试或应用程序代码本身以使它们在覆盖模式下通过,通常这意味着更改我用于解构对象或声明导入的语法,这让我认为这是一个 babel 配置问题.但是其中一些我无法通过并且不想花时间重写几十个测试,这些测试在我正常运行时运行良好并且仅在覆盖模式下失败;我宁愿只是找出配置/转换问题并为整个项目更改它,而不是拆开并重写我的所有测试。
几周的研究让我相信这与测试环境配置、babel 配置或覆盖提供程序有关,所有这些在
--coverage
模式下运行时都可能不同。例如,一些有类似问题的人能够通过将覆盖提供者从istanbul
切换到v8
,更改testEnvironment
,或升级包如babel@core
,jest-cli
或jest-babel
来解决他们
.但我不知道如何缩小问题的范围,我已经尝试了所有这些建议但没有成功——仍然让所有测试在正常测试模式下通过,而 6 个套件在 --coverage
模式下失败。
我试过:
升级
jest-cli
,添加babel-plugin-istanbul@next
作为
在这里建议:https://github.com/jestjs/jest/issues/2007
变
coverageProvider
为v8
,变testEnvironment
为
jest-environment-jsdom-sixteen
如这里所建议的:
https://github.com/testing-library/react-testing-library/issues/622
删除锁文件和节点模块;重新安装所有软件包
升级
jest
,@babel-core
,babel-jest
有人知道如何缩小正常测试模式和覆盖模式之间哪些配置选项可能不同吗?我正在使用
craco
修改配置而不弹出 CRA(这是我能够更改覆盖提供者的唯一方法)。所以理论上我可以尝试修改其他配置键,但我不知道还有什么值得尝试的。