javascript - Ejecutando manta.js
jasmine blanket.js (3)
Estoy probando un código mediante programación con Jasmine de Node. Para ello, he configurado lo siguiente:
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();
Cuando se ejecuten esas pruebas, me gustaría obtener los detalles de la cobertura del código. Mientras intentaba esto, tropecé con blanket.js . Mi pregunta es, ¿cómo puedo generar los resultados de cobertura de código mediante programación? Usando el código de arriba, recibo un error. El error simplemente dice:
Error: Bad file instrument indicator. Must be a string, regex, function, or array.
¿Por qué? ¿Qué estoy haciendo mal?
Actualizar
En mi archivo package.son, tengo la siguiente sección:
"config": {
"blanket": {
"data-cover-flags": {
"engineOnly":true
}
}
}
He actualizado mi función runTests
para tener este aspecto:
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;
El código anterior está en un archivo llamado "main.js" que ejecuto llamando al node main.js
desde la ventana de la consola. "library.js" está al mismo nivel y las pruebas están en un directorio secundario en "./unit-tests/tests.js". Cuando se ejecuta lo anterior, el código de CustomerReporter nunca se llama. No entiendo porque
Parece que necesita agregar el reportero al entorno Jasmine.
jasmine.getEnv().addReporter(reporter);
Pruebe el reportero personalizado https://github.com/alex-seville/blanket/blob/master/docs/advanced_browser.md#reporters
blanket.customReporter=function(coverage_results){
console.log(coverage_results);
};
https://github.com/alex-seville/blanket/issues/248
Si no especifica lo siguiente en su package.json, manta arroja un "Indicador de instrumento de archivo defectuoso. Debe ser una cadena, expresión regular, función o matriz". error. Tan pronto como lo requiera (''manta''); desde cualquier lugar dentro del nodo.
"scripts": {
"blanket": {
"data-cover-flags": {
"engineOnly":true
}
}
}