我试图找出如何将我的所有.ts源包括在来自角度CLI的生成的覆盖率报告中。目前,我只覆盖与测试相关的规范的文件。
我尝试将includeAllSources
标志添加到我的karma.conf.js文件中,但这没什么区别。
这里正确的方法是什么?我正在使用Angular CLI 6.1.5
谢谢
答案 0 :(得分:6)
在Angular(v6)上为我工作的最简单的解决方案是添加一个app.module.spec.ts
文件以赞美您的app.module.ts
,并且在.spec中包含以下代码
import './app.module';
显然,由于app.module.ts
是应用程序的根,包括对该模块的.spec会导致在代码覆盖期间(ng test --code-coverage
)包含所有文件
答案 1 :(得分:1)
在Angular 8项目中使用与上述答案相同的解决方法。 对于每个延迟加载的模块,我添加了一个单独的测试文件,类似于app.module.spec.ts。
答案 2 :(得分:0)
Solution provided by Narm确实很棒,但是仍然不理想,因为需要手动至少导入所有延迟加载的模块+根到测试中,而且在大型项目中,几乎总是有一些未使用/遗忘的组件它们不是任何生产代码的一部分,并且将保留在源代码中,未经测试/未被发现。
解决方案:
https://github.com/kopach/karma-sabarivka-reporter。
要使用它→安装npm install --save-dev karma-sabarivka-reporter
并像这样更新karma.conf.js
:
reporters: [
// ...
'sabarivka'
// ...
],
coverageReporter: {
include: 'src/**/!(*.spec|*.module|environment*).ts', // glob pattern
exclude: 'src/main.ts',
// ...
},
此后–所有文件匹配模式都将包含在最终覆盖结果中