You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jest.config配置忽略指定文件无效 覆盖率仍统计目标文件

Jest覆盖率忽略规则不生效问题解决

核心原因

你在项目根目录编写的jest.config.js没有被react-scripts加载。
Create React App 生态下的react-scripts内置了封装好的Jest默认配置,默认不会读取项目根目录下的自定义jest配置文件,这就是为什么你删除所有自定义配置后,覆盖率统计结果完全没有变化的原因——你写的配置从一开始就没生效。

解决方案

方案1:不弹出配置(推荐,无侵入)

直接在项目根目录的package.json中新增jest配置字段,react-scripts会自动读取该字段的配置,和内置默认配置合并。
覆盖率忽略规则优先用collectCoverageFrom配置,写法更直观不容易出错:

{
  // 保留原有的scripts、dependencies等所有配置,新增以下jest字段即可
  "jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx}",
      "!src/index.jsx",
      "!src/reportWebVitals.js",
      "!src/**/*.test.{js,jsx}",
      "!src/setupTests.js"
    ]
  }
}

配置规则说明:

  • 不带!前缀的路径是需要收集覆盖率的文件范围
  • 带!前缀的路径是需要排除、不统计覆盖率的文件,直接填写要忽略的文件路径即可
    如果你不想把Jest配置写在package.json里,也可以引入@craco/craco这类配置覆写工具,通过craco配置文件修改Jest规则,不需要执行eject操作。

方案2:已执行eject弹出配置

如果你的项目已经执行过npm run eject,不要在根目录新建jest.config.js,直接修改config/jest目录下的内置配置文件,把覆盖率忽略规则添加到对应配置项中即可。

注意:你之前配置里的roots: ['<rootDir>/server/tests']和执行的react-scripts test ./src命令扫描路径冲突,后续如果要同时统计前后端覆盖率,建议分开配置、分开跑前后端的测试和覆盖率命令,不要混在同一个Jest配置里。

配置校验方法

改完配置后,可以故意写一个错误的Jest配置值(比如把testEnvironment改成不存在的字符串),再执行覆盖率命令:

  • 如果命令报错,说明配置已经被正确加载
  • 如果命令正常执行、覆盖率结果无变化,说明配置仍然没有被读取,需要检查配置写法和存放位置

内容的提问来源于stack exchange,提问作者Leon Gaban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:27:16