【发布时间】: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 中的许多方法(例如 Collector 和 Reporter 中的方法)允许您处理覆盖对象,但它们假定覆盖对象已经存在。我的问题是首先如何生成覆盖对象。我确定我缺少一些简单的东西。我注意到Instrumenter.lastFileCoverage() 存在;我试过了,正如宣传的那样,得到了零覆盖对象,包括这样的行:
statementMap:
{ '1': SourceLocation { start: [Object], end: [Object], skip: undefined },
'2': SourceLocation { start: [Object], end: [Object], skip: undefined },
我的问题是,我怎样才能在内存中生成一个覆盖对象(无需脱壳)?我错过了一个简单的cover 方法吗?
【问题讨论】:
-
我发现 在 发布此问题后发现它与 stackoverflow.com/q/39302198/831878 重复。我在这里删除了我的答案并回答了另一个问题。