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
相关产品推荐
相关产品推荐

