我正在以编程方式测试一些代码,使用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.son文件中,我有以下部分:
"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-test/tests.js“的子目录中。当运行上述代码时,永远不会调用customerReporter代码。我不明白为什么。
发布于 2015-12-23 16:25:53
https://github.com/alex-seville/blanket/issues/248
如果您没有在package.json中指定下面的内容,则毯子会抛出一个“坏文件仪表指示符。必须是字符串、正则表达式、函数或数组。”错误。只要你需要(‘毯子’);从节点内的任何地方。
"scripts": {
"blanket": {
"data-cover-flags": {
"engineOnly":true
}
}
}发布于 2015-12-23 16:21:14
似乎你需要把记者添加到茉莉花的环境中。
jasmine.getEnv().addReporter(reporter);来源:reporter.html
发布于 2015-12-21 15:35:46
尝试自定义报告器browser.md#reporters
blanket.customReporter=function(coverage_results){
console.log(coverage_results);
};https://stackoverflow.com/questions/34325711
复制相似问题