Angular CLI - 获取包含所有来源的覆盖率报告
Posted
技术标签:
【中文标题】Angular CLI - 获取包含所有来源的覆盖率报告【英文标题】:Angular CLI - Get coverage report to include all sources 【发布时间】:2019-02-05 18:01:38 【问题描述】:我试图弄清楚如何将我的所有 .ts 源包含在从 angular CLI 生成的覆盖率报告中。目前,我只覆盖具有相关规范和测试的文件。
我尝试将includeAllSources
标志添加到我的 karma.conf.js 文件中,但这没有任何区别。
这里的正确方法是什么?我正在使用 Angular CLI 6.1.5
谢谢
【问题讨论】:
我已经更新了 angular.json 中的 sourceRoot,它对我有用。 【参考方案1】:Solution provided by Narm 确实很棒,但仍然不理想,因为至少需要手动导入所有延迟加载的模块 + 根模块到测试,而且在大型项目中,几乎总是有一些未使用/被遗忘的组件不是任何生产代码的一部分,并且将永远留在源代码中未经测试/未被发现。
解决方案:
https://github.com/kopach/karma-sabarivka-reporter。
要使用它→安装npm install --save-dev karma-sabarivka-reporter
并更新karma.conf.js
,如此处所述https://github.com/kopach/karma-sabarivka-reporter#-usage
在此之后 - 所有匹配模式的文件都将包含在最终覆盖结果中
【讨论】:
这很好用。我必须将require('karma-sabarivka-reporter')
添加到karma.conf.js
中的plugins
数组才能使其工作。线路覆盖范围从 434/4201 变为 38/6589,这有点奇怪,因为覆盖的线路不应该改变。但是,当我 cloc src/app
我的应用程序时,它会显示 11,745 行 TypeScript。所以看起来还有很多 LOC 没有被计算在内。
@alexraasch,请确保您的配置不包含“太多”。只应包含所需的源代码文件。请参阅插件自述文件页面的使用部分。至于 LOC - 试试 karma-html-reporter,并查看生成的 HTML 报告以查看究竟添加了哪些内容。
好奇人们是如何用玩笑来处理这个问题的? jest.config 文件中有点类似?【参考方案2】:
在 Angular(v6) 上对我有用的最简单的解决方案是添加一个 app.module.spec.ts
文件来补充您的 app.module.ts
并在该 .spec 中包含以下代码
import './app.module';
显然,由于app.module.ts
是您的应用程序的根,包括该模块的 .spec 将导致在代码覆盖期间包含您的所有文件 (ng test --code-coverage
)
【讨论】:
在我的 Angular 8 项目中使用了与上述答案相同的解决方法。对于每个延迟加载的模块,我添加了一个类似于 app.module.spec.ts 的单独测试文件。 我有一个小型 Angular 库。在test.ts
的末尾,我添加了一个导出:export * from './public-api';
以上是关于Angular CLI - 获取包含所有来源的覆盖率报告的主要内容,如果未能解决你的问题,请参考以下文章