我已经浏览了Istanbul API中的每个课程,但却无法了解如何制作"覆盖对象。"
检测代码完全没问题:
const istanbul = require('istanbul');
const instrumenter = new istanbul.Instrumenter();
instrumenter.instrument(sourceCode, filename, (err, instrumentedCode) => {
console.log(instrumentedCode);
}
但这只是检测代码;我需要执行它才能生成覆盖对象。但我无法找到如何做到这一点。当然,我可以向伊斯坦布尔挑战并运行
istanbul cover filename.js
并挖掘并解析coverage.json
文件,但我不想要炮轰;我想在内存中的JavaScript程序上运行覆盖。
Istanbul API中的许多方法(如Collector
和Reporter
中的方法)允许您处理coverage对象,但它们假设coverage对象已存在。我的问题是如何首先产生覆盖对象。我确定我错过了一些简单的事情。我注意到Instrumenter.lastFileCoverage()
存在;我试过了,并且如所宣传的那样,得到了零覆盖对象,包括这样的行:
statementMap:
{ '1': SourceLocation { start: [Object], end: [Object], skip: undefined },
'2': SourceLocation { start: [Object], end: [Object], skip: undefined },
我的问题是,如何在内存中生成覆盖对象(没有外壳)?我错过了一个简单的cover
方法吗?
答案 0 :(得分:0)
使用官方istanbul api repo中的istanbul-lib-instrument
包。
它有一个方法lastFileCoverage
,它与标准istanbul instrumenter's实现不同。
我刚刚对我正在进行的项目进行了测试,根据我的经验,这是一个替代品(api的指导者)。我还尝试了lastFileCoverage
方法,它实际上为最后处理的文件提供了完整的文件覆盖率。