我正在使用来自Node的Jasmine进行程序化代码测试。为此,我已经设置了以下内容:
function runTests() {
var Jasmine = require('jasmine');
var jasmine = new Jasmine();
jasmine.loadConfig({
spec_dir: 'unit-tests',
spec_files: [
'tests-*.js'
]
});
var blanket = require('blanket')();
var TerminalReporter = require('jasmine-terminal-reporter');
var reporter = new TerminalReporter({});
jasmine.addReporter(reporter);
jasmine.execute();
}
runTests();
当这些测试运行时,我希望能够获得代码覆盖率的详细信息。在尝试这样做时,我偶然发现了Blanket.js。我的问题是,如何以编程方式输出代码覆盖结果?使用上述代码会导致错误。该错误简单地说:Error: Bad file instrument indicator. Must be a string, regex, function, or array.
为什么?我做错了什么?
更新
在我的 package.json 文件中,我有以下部分:"config": {
"blanket": {
"data-cover-flags": {
"engineOnly":true
}
}
}
我已更新我的runTests
函数,现在它是这样的:
function runTests() {
var Jasmine = require('jasmine');
var jasmine = new Jasmine();
jasmine.loadConfig({
spec_dir: 'unit-tests',
spec_files: [
'tests-*.js'
]
});
// Setup the coverage reporter
var blanket = require("blanket")();
var blanketReporter = function(coverageData) {
console.log(coverageData);
};
blanket.customReporter = blanketReporter;
blanket.instrument({
inputFile: 'library.js'
}, function(result) { });
var TerminalReporter = require('jasmine-terminal-reporter');
var reporter = new TerminalReporter({});
jasmine.addReporter(reporter);
jasmine.execute();
}
library.js
'use strict';
class Processor
{
execute(vals) {
let result = 0;
vals.forEach(function(v) {
result += v;
});
return result;
}
}
module.exports = Processor;
上面的代码在名为"main.js"的文件中,我通过在控制台窗口调用node main.js
来运行它。 "library.js"与主文件在同一级目录下,测试文件夹位于"./unit-tests/tests.js"。 当上述内容运行时,customerReporter代码从未被调用。 我不明白为什么。
library.js
是什么样子? - edin-m