【问题标题】:How can I get Istanbul's coverage.json object programmatically?如何以编程方式获取伊斯坦布尔的 coverage.json 对象?
【发布时间】:2017-06-22 03:51:10
【问题描述】:

我已经通过了Istanbul API 中的每个类,但一直无法找出如何生成“覆盖对象”。

检测代码完全没问题:

const istanbul = require('istanbul');
const instrumenter = new istanbul.Instrumenter();
instrumenter.instrument(sourceCode, filename, (err, instrumentedCode) => {
  console.log(instrumentedCode);
}

但这只是检测代码;我需要执行它以生成 coverage 对象。但我不知道如何做到这一点。当然我可以掏钱去伊斯坦布尔跑

istanbul cover filename.js

并挖掘并解析coverage.json 文件,但我不想 想要掏空;我想对内存中的 JavaScript 程序进行覆盖。

Istanbul API 中的许多方法(例如 CollectorReporter 中的方法)允许您处理覆盖对象,但它们假定覆盖对象已经存在。我的问题是首先如何生成覆盖对象。我确定我缺少一些简单的东西。我注意到Instrumenter.lastFileCoverage() 存在;我试过了,正如宣传的那样,得到了零覆盖对象,包括这样的行:

  statementMap: 
   { '1': SourceLocation { start: [Object], end: [Object], skip: undefined },
     '2': SourceLocation { start: [Object], end: [Object], skip: undefined },

我的问题是,我怎样才能在内存中生成一个覆盖对象(无需脱壳)?我错过了一个简单的cover 方法吗?

【问题讨论】:

标签: code-coverage istanbul


【解决方案1】:

使用来自官方 istanbul api repo 的 istanbul-lib-instrument 包。

它有一个方法lastFileCoverage,它不同于标准的istanbul instrumenter's 实现。

我刚刚在我正在从事的一个项目上进行了测试,根据我的经验,它是一个直接替代品(api 的仪器)。我还尝试了lastFileCoverage 方法,它实际上为最后处理的文件提供了完整的文件覆盖。

【讨论】:

    猜你喜欢
    • 2017-01-11
    • 2016-07-03
    • 2017-06-26
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2016-11-16
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多