Estoy usando Mocha para probar mi aplicación NodeJS. No puedo entender cómo usar su función de cobertura de código. Intenté buscarlo en Google pero no encontré ningún tutorial adecuado. Por favor ayuda.
Estoy usando Mocha para probar mi aplicación NodeJS. No puedo entender cómo usar su función de cobertura de código. Intenté buscarlo en Google pero no encontré ningún tutorial adecuado. Por favor ayuda.
Respuestas:
Necesitas una biblioteca adicional para la cobertura del código, y te sorprenderá lo poderosa y fácil que es Estambul . Intente lo siguiente, después de pasar sus pruebas de mocha:
npm install nyc
Ahora, simplemente coloque el comando nyc delante de su comando de prueba existente, por ejemplo:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
es un acceso directo canónico a ./node_modules/.bin/
, y istanbul/lib/cli.js
tiene un alias istanbul
en la carpeta bin. Así que aquí hay un comando más corto:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Ahora ( 2020 ), la forma preferida de utilizar Estambul es a través de su "interfaz de línea de comandos de última generación" de Nueva York .
Primero, instálalo en tu proyecto con
npm i nyc --save-dev
Luego, si tiene un proyecto basado en npm, simplemente cambie el script de prueba dentro del scripts
objeto de su archivo package.json para ejecutar la cobertura de código de sus pruebas de mocha :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Ahora ejecuta tus pruebas
npm test
y verá una tabla como esta en su consola, justo después de la salida de sus pruebas:
Solo usa
nyc --reporter=html
en lugar de text
. Ahora producirá un informe dentro ./coverage/index.html
.
Estambul admite una amplia gama de formatos de informes. Solo mire su biblioteca de informes para encontrar la más útil para usted. Simplemente agregue una --reporter=REPORTER_NAME
opción para cada formato que desee. Por ejemplo, con
nyc --reporter=html --reporter=text
tendrá tanto la consola como el informe html.
Simplemente agregue otro script en su package.json
y deje el test
script solo con su corredor de prueba (por ejemplo, mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Ahora ejecuta este script personalizado
npm run test-with-coverage
ejecutar pruebas con cobertura de código.
Falla si la cobertura total del código es inferior al 90%:
nyc --check-coverage --lines 90
Falla si la cobertura del código de al menos un archivo es inferior al 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
habilitado pero el archivo html está vacío siempre, no se muestra nada sobre bloques descubiertos o% cubierto, etc. solo encabezados de la tabla
Blanket.js también funciona perfecto.
npm install --save-dev blanket
en frente de su prueba / tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
correr mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.