You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NX E2E测试无法生成API覆盖率,求正确实现方法

Nx API E2E测试覆盖率生成方案

问题根源

你之前的collectCoverageFrom路径存在语法错误(多了一个斜杠:**/*/.ts应为**/*.ts),且未正确处理Nx项目间的路径关联,导致Jest无法找到API源代码并生成有效覆盖率报告。

正确配置步骤

1. 修正api-e2e的jest.config.ts

修改api-e2e项目的jest.config.ts,配置正确的覆盖率收集路径及项目映射:

import { getJestProjects } from '@nx/jest';

export default {
  displayName: 'api-e2e',
  preset: '../../jest.preset.js',
  testEnvironment: 'node',
  transform: {
    '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
  },
  moduleFileExtensions: ['ts', 'js', 'html'],
  coverageDirectory: '../../coverage/apps/api-e2e',
  // 相对api-e2e目录指向API项目源代码,排除测试文件和入口文件
  collectCoverageFrom: [
    '../api/src/**/*.ts',
    '!../api/src/**/*.spec.ts',
    '!../api/src/main.ts',
  ],
  // 继承API项目的路径别名配置,确保Jest能正确解析模块
  moduleNameMapper: require('../api/tsconfig.json').compilerOptions.paths || {},
};

2. 开启API项目的sourceMap

在api项目的tsconfig.json中启用sourceMap,这是Jest生成准确覆盖率的前提:

{
  "compilerOptions": {
    "sourceMap": true,
    // 其他原有配置...
  }
}

3. 执行测试并生成覆盖率

使用Nx命令运行E2E测试并生成覆盖率报告:

nx test api-e2e --coverage

额外优化

  • 若API基于NestJS等框架,确保E2E测试是启动真实服务运行的(而非仅模拟),才能覆盖到实际业务代码。
  • 可在nx.json中为api-e2e配置默认开启coverage,避免每次命令手动添加参数:
{
  "projects": {
    "api-e2e": {
      "targets": {
        "test": {
          "options": {
            "coverage": true
          }
        }
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者jonianas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:42:39