angular - 如果代码覆盖率不符合 Angular 6 中定义的阈值,则从 Karma 返回非零错误代码

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

我希望我的 jenkins 构建在代码覆盖率未达到 karma.config.js 中定义的阈值时中断。如果代码覆盖率不符合定义的阈值,Karma 应该返回非零错误代码以中断持续集成。但在我的例子中,它以零错误代码退出,因此如果代码覆盖率小于阈值,则不会导致测试失败。

版本

Angular CLI:6.0.8

Angular :6.1.9

karma :1.7.1

代码:

以下是我在 karma.config.js 中设置的阈值

coverageIstanbulReporter: {
  dir: require('path').join(__dirname, '../coverage'),
  reports: ['html', 'lcovonly'],
  fixWebpackSourcePaths: true,
  thresholds: {
    statements: 80,
    lines: 80,
    branches: 80,
    functions: 80
  }
}

我正在执行以下命令:

ng 测试 --watch false --browsers PhantomJS --code-coverage

Karma 显示以下错误,但返回 0 作为错误代码:

错误 [reporter.coverage-istanbul]:分支机构的覆盖率 (70.7%) 未达到全局阈值 (80%)

错误 [reporter.coverage-istanbul]:功能覆盖率 (79.05%) 未达到全局阈值 (80%)

预期行为

如果代码覆盖率未达到中断持续集成的阈值,Karma 将返回非零错误代码

实际行为

Karma 报错但正常退出,错误代码为零

在寻找解决方案时,我发现了以下信息:

“像 ng testng serveng build --watch 这样以监视模式运行的命令通常不会以错误。这是设计使然。

ng test --watch=falseng buildng e2e 等非 watch 命令确实会以错误代码退出。

此外,似乎无法同时关闭自动监视和生成代码覆盖率”

如果有人对我如何解决这个问题有任何建议,或者如果有人对我可能做错了什么有任何想法,请告诉我。

最佳答案

Github 上有问题解决了这个确切的问题,这个问题已经被这个 PR 关闭了.

关于angular - 如果代码覆盖率不符合 Angular 6 中定义的阈值,则从 Karma 返回非零错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54708845/

相关文章:

angular - 如何测试包含第三方指令的组件

javascript - 我可以从对象继承函数参数的类型吗?

Angular 单元测试: How to serve css files now in karma with angular 6+

angular - 平台设置后无法启用产品模式。 Angular 5 生产构建

angular - npm 审计修复 --force 导致错误 : Data path ".builders[' app-shell' ]"should have required property ' class'

angular - 没有项目支持 Angular 中的 'test' 目标

javascript - 如何使用 Angular 对带有 Promise 和回调函数的函数进行单元测试

Angular 4 - 我想创建 dom 元素的克隆

angular - SpyOn 调用方法的实际实现

angular - nativeElement.getBoundingClientRect() 在 Angular 测试中总是返回 0