Angular项目如何将路由模块从Karma覆盖率统计中排除?
Angular Karma覆盖率排除路由模块配置方案
配置失效原因
你之前使用的"*.module.routing.ts"规则仅能匹配项目根目录下的路由文件,无法匹配任意子目录中存放的路由模块,因此才会出现配置不生效的问题。
正确配置步骤
1. 修正angular.json匹配规则
将angular.json中测试配置的匹配规则改为带全局通配符的格式,适配任意层级的子目录:
"test": { "options": { "codeCoverageExclude": ["**/*.module.routing.ts"] } }
其中**代表匹配任意层级的目录,该规则会覆盖项目所有路径下后缀为.module.routing.ts的文件。
2. 可选:Karma配置文件补充配置
如果你的项目单独维护了Karma配置,可在karma.conf.js的Istanbul覆盖率配置项中添加排除规则:
module.exports = function (config) { config.set({ // 其余原有配置保持不变 coverageIstanbulReporter: { exclude: [ "**/*.module.routing.ts" ], // 其余原有覆盖率配置保持不变 } }) }
验证生效
- 修改配置后必须完全停止当前正在运行的测试进程,重新执行
ng test --code-coverage命令,测试服务的热重载不会加载更新后的覆盖率规则 - 测试执行完成后打开生成的coverage报告,确认路由模块文件已被移出统计范围
内容的提问来源于stack exchange,提问作者veroneseComS
相关产品推荐
相关产品推荐

