【问题标题】:Cannot generate Jest coverage report无法生成 Jest 覆盖率报告
【发布时间】:2022-01-10 20:01:22
【问题描述】:

我正在使用 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 上创建了一个issue,但我不确定这是他们的问题还是其他问题,所以我想我也会在这里问。

【问题讨论】:

    标签: typescript testing jestjs next.js swc-compiler


    【解决方案1】:

    在我看来,您的“collectCoverageFrom”值在您的笑话配置中格式不正确。您可以使用 double asterisks ** 递归所有目录和子目录,并使用单个 * 作为通配符(无论是目录名还是文件名)。

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

    src/**/*
    

    如果你只想要所有目录下的js和ts文件(不管有多少子目录):

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

    如果你所有的文件都只在 src 目录下:

    src/*
    

    您的配置中的内容,匹配以 js、ts 等结尾的目录。

    【讨论】:

    • 好消息@Nugen.exe 我将我的配置更新为collectCoverageFrom: ['&lt;rootDir&gt;/../src/**/*.{ts,js,tsx,jsx}'],但仍然无法生成覆盖率报告:/ 你认为这可能是@swc/jest 的问题吗?
    • @skon182 Prehaps 正在解析到您的 package.json 存在的位置 (gaurav5430.medium.com/…),除非您的测试目录中有一个,这可以解释您的测试是如何运行的。我不能说这是@swc/jest 问题。似乎将 rootDir 作为 jest/ 而不是节点根存在意外行为。我在 Jest 中发现了一些死板的结构逻辑,例如 mocks 必须在其源代码旁边才能自动 mock。
    猜你喜欢
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2020-05-20
    • 2018-06-03
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多