我正在使用 Typescript 开发 Next.js 项目,目前正在使用 SWC 编译器。结果,我正在使用 @swc/jest为了我的测试。我所有的测试都通过了,但覆盖率报告总是空着。这是我的 jest.config.js
的样子:
module.exports = {
'roots': ['<rootDir>/../src'],
'moduleDirectories': ['node_modules', 'src'],
'setupFilesAfterEnv': ['<rootDir>/setup-tests.js'],
'coverageDirectory': '<rootDir>/../coverage',
'verbose': true,
'collectCoverage': true,
'transform': {
'^.+\\.(t|j)sx?$': [
'@swc/jest',
{
'jsc': {
target: 'es2021',
},
'sourceMaps': true,
},
],
},
'collectCoverageFrom': [
'<rootDir>/../src/**.{ts,js,tsx,jsx}',
'!**/node_modules/**',
],
}
我的文件结构如下:
.
├── coverage
├── jest
│ ├── jest.config.js
│ ├── setup-tests.js
├── src/
├── tsconfig.json
输出看起来像这样:
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------
Test Suites: 11 passed, 11 total
Tests: 25 passed, 25 total
Snapshots: 0 total
Time: 1.307 s
Ran all test suites.
我创建了一个 issue在 @swc/jest 上,但我不确定这是他们的问题还是其他问题,所以我想我也会在这里问。
最佳答案
在我看来,您的 jest 配置中的“collectCoverageFrom”值格式不正确。你会使用 double asterisks ** 递归所有目录和子目录,单个 * 用作通配符(无论是目录名还是文件名)。
抓取所有目录下的所有文件(不管有多少个子目录)是:
src/**/*
如果你只想要所有目录下的js和ts文件(不管有多少个子目录):
src/**/*.{js,ts}
如果你所有的文件都只在src目录下:
src/*
你在你的配置中有什么,匹配一个以js、ts等结尾的目录
关于typescript - 无法生成 Jest 覆盖率报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70658273/