Ich teste einige Programmcode mit Jasmine von Node. Um dies zu tun, habe ich Setup die folgenden:Running Blanket.js
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();
Wenn diese Tests laufen, würde Ich mag die Code-Coverage-Details erhalten. Während ich dies versuchte, stolperte ich über blanket.js. Meine Frage ist, wie kann ich die Ergebnisse der Codeabdeckung programmatisch ausgeben? Mit dem obigen Code erhalte ich einen Fehler. Der Fehler sagt einfach:
Error: Bad file instrument indicator. Must be a string, regex, function, or array.
Warum? Was mache ich falsch?
aktualisieren
In meiner package.son Datei habe ich den folgenden Abschnitt:
"config": {
"blanket": {
"data-cover-flags": {
"engineOnly":true
}
}
}
Ich habe meine runTests
Funktion aktualisiert wie folgt aussehen:
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;
Der obige Code ist in einer Datei namens "main.js", die ich durch Aufruf von node main.js
aus dem Konsolenfenster ausführen. "library.js" befindet sich auf derselben Ebene und die Tests befinden sich in einem untergeordneten Verzeichnis unter "./unit-tests/tests.js". Wenn das obige ausgeführt wird, wird der CustomerReporter-Code nie aufgerufen. Ich verstehe nicht warum.
[Anweisungen zur Verwendung des Test-Jasmin runner] (https://github.com/alex-seville/blanket/blob/v1.1.7/docs/intermediate_browser.md). – approxiblue
Noch kein Glück, die Decke von Node läuft. –
Wie sieht '' library.js''' aus? –