test spec nodejs node example before node.js requirejs jasmine mocha istanbul

node.js - spec - node test before



¿Cómo puedo hacer que Estambul trabaje con nodo, mocha, jazmín y requiera js? (2)

@ user2576666 respondió la pregunta en los comentarios:

"Usar el parámetro --hook-run-in-context lo hace funcionar correctamente"

Tengo un conjunto de pruebas existente que funciona bien en node.js usando mocha, require y jazmín, y las pruebas se ejecutan a través de un script de psake powershell. Estoy intentando agregar cobertura de prueba, por lo tanto, ejecutar la prueba de la unidad en lugar de hacerlo:

node unitTest.js

estoy haciendo

tapa de estambul unitTest.js

Lo cual parece funcionar, pero solo me da información de cobertura en unitTest.js pero no en ninguno de los otros archivos javascript en uso en el proyecto. Supongo que es debido a la combinación de require / mocha, por lo que no sabe acerca de los archivos js que estoy usando.

Intenté instrumentar manualmente todos los archivos como un paso anterior a la cobertura del código y ejecutar el mismo comando en los archivos copiados / instrumentados, pero obtuve el mismo resultado. ¿Alguna sugerencia para hacer que esto funcione?

Aquí está la última parte de unitTest.js

requirejs([''mocha''], function(Mocha) { var mocha = new Mocha({reporter: (process.env[''TEAMCITY_VERSION''] ? ''teamcity'' : ''spec'')}); // Hack to establish the global variables (sigh) mocha.suite.emit(''pre-require'', global, __filename, mocha); fswalk(__dirname, function(err, results) { if (err) console.warn(err); else { var testName = process.argv[2] || ""; console.log("testName: " + testName); var inclusionSuffixes = [testName + ''.test.js'']; var exclusionSuffixes = [''.integration.test.js'']; var tests = _.filter(results, function (result) { var test = function (suffix) { return result.indexOf(suffix) == result.length - suffix.length; }; return _.any(inclusionSuffixes, test) && !_.any(exclusionSuffixes, test); }); requirejs(tests, function () { mocha.run(function(failures) { process.exit(failures); }); }); } });

});


Una alternativa para tratar de convencer a estas varias piezas para que trabajen juntas es utilizar Intern .

Esto tiene sentido especialmente para proyectos que usan AMD (require.js). Usa a Estambul bajo el capó y tiene un servidor proxy que instrumenta tu código automáticamente. Es una configuración muy ingeniosa para lo que estás tratando de hacer.