Jest如何自动收集被测文件覆盖率无需手动指定collectCoverageFrom
解决方案
以下是3种可直接落地的配置方式,不需要每次手动输入长参数:
方式1:修改Jest全局配置(最推荐)
在你的项目根目录的jest.config.js(如果用React官方脚手架没有暴露配置的话,也可以在package.json的jest字段下添加)加入以下配置:
module.exports = { // 保留你原有的其他Jest配置 // 固定覆盖率输出格式为text-summary,不用每次手动传 coverageReporters: ["text-summary"], // 自动过滤测试文件、类型声明文件等不需要统计覆盖率的文件 collectCoverageFrom: [ "src/**/*.{ts,tsx}", "!src/**/*.test.{ts,tsx}", "!src/**/*.d.ts" ] }
配置完成后,你要跑单个/多个测试文件的覆盖率,只需要执行以下命令即可:npm run test 你的测试文件路径1 测试文件路径2 -- --coverage
Jest会自动只统计这些测试文件对应的源码覆盖率,不会统计全项目的文件。
方式2:配置npm快捷脚本
如果不想改全局Jest配置,可以直接在package.json的scripts字段新增自定义命令:"test:cov": "npm run test -- --coverage --coverageReporters=text-summary --collectCoverageFrom='src/**/!(*.test.*).tsx'"
之后跑覆盖率直接执行:npm run test:cov 你的测试文件路径
方式3:配置终端别名(适合自己本地开发用)
如果你用的是zsh/bash,可以在~/.zshrc/~/.bashrc中添加以下别名:alias testcov='f() { npm run test "$@" -- --coverage --coverageReporters=text-summary; }; f'
保存生效后,直接执行testcov 测试文件路径就能快速跑对应文件的覆盖率。
内容的提问来源于stack exchange,提问作者lpetrucci
相关产品推荐
相关产品推荐

