React Native项目Jest覆盖率工具运行报错该如何解决?
解决方案
问题根因
你的Jest配置未排除覆盖率报告目录下的文件,导致旧报告里的前端页面脚本(sorter.js、block-navigation.js)被Jest误识别为测试用例执行。这类脚本依赖浏览器环境的window、document对象,而React Native默认的测试环境没有相关全局变量,因此触发报错。
可落地的3种修复方案
方案1:配置测试路径忽略规则(最推荐)
在Jest配置中新增testPathIgnorePatterns字段,明确排除覆盖率目录即可:
const config: Config.InitialOptions = { // 保留原有其他配置 testPathIgnorePatterns: [ '<rootDir>/node_modules/', '<rootDir>/__tests__/coverage/' // 新增这行,路径和你配置的coverageDirectory对应 ] }
方案2:修改测试文件匹配规则
调整testRegex配置,用负向预查排除__tests__下的coverage目录文件:
testRegex: "(/__tests__/(?!coverage).*|\\.(test|spec))\\.(ts|tsx|js)$",
方案3:测试前自动清理旧覆盖率报告
修改项目package.json中的测试命令,每次执行测试前自动删除旧的coverage目录:
- 兼容Unix/Mac系统直接用rm命令:
{ "scripts": { "test": "rm -rf __tests__/coverage && jest" } }
- 要跨Windows/Unix兼容的话,先安装
rimraf依赖:npm i rimraf -D,再修改命令:
{ "scripts": { "test": "rimraf __tests__/coverage && jest" } }
内容的提问来源于stack exchange,提问作者Sam Fisher
相关产品推荐
相关产品推荐

