1

我正在使用 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.

我在@swc/jest 上创建了一个问题,但我不确定这是他们的问题还是其他问题,所以我想我也会在这里问。

4

1 回答 1

0

在我看来,您的“collectCoverageFrom”值在您的笑话配置中格式错误。您将使用双星号** 递归所有目录和子目录,并使用单个 * 作为通配符(无论是目录名还是文件名)。

要捕获所有目录中的所有文件(无论有多少子目录)是:

src/**/*

如果您只想要所有目录中的 js 和 ts 文件(无论有多少子目录):

src/**/*.{js,ts}

如果您的所有文件仅在 src 目录中:

src/*

您在配置中拥有的内容与以 js、ts 等结尾的目录匹配。

于 2022-01-11T03:31:26.180 回答