我想执行命令
istanbul cover node_modules/mocha/bin/_mocha dist/test
使用Istanbul编程API。但是文档并没有多说,除此之外一切皆有可能,并链接到庞大的API文档。我无法在互联网上找到任何简短的例子。我不想生成子进程或使用NPM中的其他模块。我知道如何在没有覆盖的情况下以编程方式运行Mocha,所以这不是问题。
答案 0 :(得分:0)
我找到了一种方法来做到这一点,但它并不太漂亮。如果您eval
(我知道!)已经过检测的代码,Istanbul会将coverage对象写入全局变量__coverage__
。如果您愿意,还可以在指导者的构造函数中指定全局变量的名称。这是一个命令行脚本,显示了如何完成它:
const istanbul = require('istanbul');
const instrumenter = new istanbul.Instrumenter();
const collector = new istanbul.Collector();
const fs = require('fs');
const filename = 'file.js';
fs.readFile(filename, 'utf-8', (err, data) => {
instrumenter.instrument(data, filename, (err, generatedCode) => {
eval(generatedCode);
console.log(JSON.stringify(global['__coverage__']));
});
});
文件部分和console.log
只是为了进行完整的演示。您真正需要的只是instrument
和eval
。您是否愿意亲自使用eval
取决于您。