Я тестирую программный код с помощью Jasmine с Node. Для этого я установил следующее:
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-tests/tests.js". Когда это выполняется, код customerReporter никогда не вызывается. Я не понимаю, почему.