Angular CLI-获取覆盖率报告以包括所有来源

时间:2018-08-30 18:04:35

标签: angular angular-cli karma-runner karma-coverage

我试图找出如何将我的所有.ts源包括在来自角度CLI的生成的覆盖率报告中。目前,我只覆盖与测试相关的规范的文件。

我尝试将includeAllSources标志添加到我的karma.conf.js文件中,但这没什么区别。

这里正确的方法是什么?我正在使用Angular CLI 6.1.5

谢谢

3 个答案:

答案 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',
    // ...
},

此后–所有文件匹配模式都将包含在最终覆盖结果中