Jest代码覆盖率无法识别父目录JS文件问题求助
Jest代码覆盖率无法识别父目录JS文件问题求助
我目前在项目里遇到了Jest代码覆盖率统计的棘手问题:我的测试文件都集中放在单独的jest文件夹中,但需要测试的代码来自父目录下两个不同的源码文件夹。之前查了相关帖子,说把rootDir设置为这些文件夹的公共父目录,再把目标源码文件夹加入roots数组就能解决覆盖率不统计父目录文件的问题,但实际操作后,源码文件夹里的JS文件还是没被覆盖率工具识别到——我特意移动了一个JS文件测试,发现只有和Jest配置文件同目录下的文件才会被纳入覆盖率统计。
我的Jest配置文件如下:
{ "testEnvironment": "jsdom", "testMatch": [ "**/jest/**/*.test.js" ], "rootDir": "../../", "transform": { "^.+\\.[t|j]sx?$": [ "babel-jest", { "configFile": "./babel.config.json" } ] }, "transformIgnorePatterns": [ "node_modules/(?!(parsel-js|cheerio|uuid)/)" ], "roots": [ "<rootDir>/mu-plugins/tests", "<rootDir>/mu-plugins/core/assets/src/js", "<rootDir>/themes/theme/assets/ts" ], "setupFilesAfterEnv": [ "<rootDir>/mu-plugins/tests/jest.setup.js" ], "moduleDirectories": [ "<rootDir>/mu-plugins/tests/node_modules" ], "globals": { "CSS": {} }, "collectCoverageFrom": [ "**/*.js" ], "coveragePathIgnorePatterns": [ "/node_modules/", "/coverage/" ], "coverageDirectory": "<rootDir>/mu-plugins/tests/coverage" }
我使用的Jest版本是29.7。
为了解决问题我已经尝试了这些操作,但都没有效果:
- 将
rootDir从和配置文件同层级修改为公共父目录,并添加了所有相关目录到roots数组(确认路径是正确的,因为如果故意写错路径,Jest会直接抛出错误) - 手动清理Jest缓存
- 尝试了多种
collectCoverageFrom的写法组合 - 修改
forceCoverageMatch的值来强制匹配目标文件
运行jest --coverage后的输出如下:
> jest --coverage PASS jest/theme/components/shared/info.test.js PASS jest/core/variant/variant.test.js ----------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s ----------|---------|----------|---------|---------|------------------- All files | 0 | 0 | 0 | 0 | ----------|---------|----------|---------|---------|------------------- Test Suites: 2 passed, 2 total Tests: 5 passed, 5 total Snapshots: 0 total Time: 5.112 s Ran all test suites.
备注:内容来源于stack exchange,提问作者gdetassigny
相关产品推荐
相关产品推荐

