Jestjs Jest coverage:我如何获得总覆盖率?

Jestjs Jest coverage:我如何获得总覆盖率?,jestjs,gitlab-ci,Jestjs,Gitlab Ci,在我的gitlab管道中,我希望将总百分比值发送到服务器。但开玩笑的是,coverage只在/coverage中提供了这些大型报告文件。我似乎无法解析出它的总价值。我是否缺少一个参数?内部jest正在使用伊斯坦布尔.js报告覆盖率,您可以使用CLI arg修改为“文本摘要”或任何其他内容 带有npm的 npm测试--coverageReporters=“文本摘要” 带纱线 纱线测试--coverageReporters=“文本摘要” 文本摘要输出: =====================

在我的gitlab管道中,我希望将总百分比值发送到服务器。但开玩笑的是,coverage只在/coverage中提供了这些大型报告文件。我似乎无法解析出它的总价值。我是否缺少一个参数?

内部jest正在使用伊斯坦布尔.js报告覆盖率,您可以使用CLI arg修改为“文本摘要”或任何其他内容

带有npm的
npm测试--coverageReporters=“文本摘要”
带纱线
纱线测试--coverageReporters=“文本摘要”
文本摘要输出:
==================================================================覆盖范围摘要===============================
报表:100%(166/166)
分行:75%(18/24)
功能:100%(49/49)
行数:100%(161/161)
================================================================================

或者你也可以写自己的记者。

感谢特内夫的回答,我同意coverageReporter=“json summary”

这将生成一个coverage-summary.json文件,该文件可以轻松解析。我直接从json获取总值:

  "total": {
    "lines": { "total": 21777, "covered": 65, "skipped": 0, "pct": 0.3 },
    "statements": { "total": 24163, "covered": 72, "skipped": 0, "pct": 0.3 },
    "functions": { "total": 5451, "covered": 16, "skipped": 0, "pct": 0.29 },
    "branches": { "total": 6178, "covered": 10, "skipped": 0, "pct": 0.16 }
  }

我自己也需要这个,所以我创建了一个定制的reporter。您需要在coverageReporters中启用json summary reporter,然后您可以使用此自定义reporter显示总计:

const{readFile}=require('fs');
const{join}=require('path');
//Gitlab正则表达式:总覆盖率:(\d+\.\d+\%)
module.exports=类别覆盖率{
建造商(全球配置){
this.globalConfig=globalConfig;
this.jsonSummary=join(this.globalConfig.coverageDirectory,'coverage summary.json');
}
异步onRunComplete(){
const coverage=require(this.jsonSummary);
const totalSum=[“行”、“语句”、“函数”、“分支”]
.map(i=>coverage.total[i].pct)
.减少((a,b)=>a+b,0)
const avgCoverage=totalSum/4
console.debug()
console.debug('=============总覆盖率======================='))
调试(`总覆盖率:${avgCoverage.toFixed(2)}%`)
console.debug('==============================================================================')
}
}

阅读文档后,我认为Jest不能简单地给出百分比,而不将报告作为文件使用。我建议您编写一个js脚本,读取索引文件并对该值执行任何您想要的操作,然后配置管道,以便在jest测试之后立即执行该脚本。您还可以绕过阈值:summary是关键字;)谢谢你!
  "total": {
    "lines": { "total": 21777, "covered": 65, "skipped": 0, "pct": 0.3 },
    "statements": { "total": 24163, "covered": 72, "skipped": 0, "pct": 0.3 },
    "functions": { "total": 5451, "covered": 16, "skipped": 0, "pct": 0.29 },
    "branches": { "total": 6178, "covered": 10, "skipped": 0, "pct": 0.16 }
  }