Cobertura de código con Mocha


Estoy usando Mocha para probar mi aplicación NodeJS. No soy capaz de averiguar cómo utilizar su función de cobertura de código. Intenté buscarlo en Google, pero no encontré ningún tutorial adecuado. Por favor, ayuda.

Author: Charles Merriam, 2013-05-19

3 answers

Necesita una biblioteca adicional para la cobertura de código, y se quedará impresionado por lo poderoso y fácil que es estambul. Prueba lo siguiente, después de que apruebes las pruebas mocha:

npm install nyc

Ahora, simplemente coloque el comando nyc delante de su comando de prueba existente, por ejemplo:

{
  "scripts": {
    "test": "nyc mocha"
  }
}
 335
Author: dankohn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-24 13:53:58

Ahora (2018) la forma preferida de usar istanbul es a través de su "interfaz de línea de comandos de última generación" nyc.

Configuración

Primero, instálalo en tu proyecto con

npm i nyc --save-dev

Entonces, si tiene un proyecto basado en npm, simplemente cambie el script de prueba dentro del objeto scripts de su paquete .json archivo para ejecutar la cobertura de código de sus pruebas mocha :

{
  "scripts": {
    "test": "nyc --reporter=text mocha"
  }
}

Corre

Ahora ejecute su pruebas

npm test

Y verás una tabla como esta en tu consola, justo después de la salida de tus pruebas:

Cobertura del código Mocha de Estambul Nyc

Personalización

Informe html

Solo use

nyc --reporter=html

En Lugar de text. Ahora producirá un informe dentro de ./coverage/index.html.

Formatos de los informes

Estambul admite una amplia gama de formatos de informes. Basta con mirar su biblioteca de informes para encontrar el más útil para usted. Simplemente agregue una opción --reporter=REPORTER_NAME para cada formato que desee. Por ejemplo, con

nyc --reporter=html --reporter=text

Tendrá tanto la consola como el informe html.

No ejecute la cobertura con la prueba npm

Simplemente agregue otro script en su package.json y deje el script test solo con su corredor de prueba (por ejemplo, mocha):

{
  "scripts": {
    "test": "mocha",
    "test-with-coverage": "nyc --reporter=text mocha"
  }
}

Ahora ejecute este script personalizado

npm run test-with-coverage

Para ejecutar pruebas con cobertura de código.

Falla la prueba de fuerza si la cobertura del código es baja

Falla si la cobertura total del código es inferior 90%:

nyc --check-coverage --lines 90 

Falla si la cobertura de código de al menos un archivo está por debajo del 90%:

nyc --check-coverage --lines 90 --per-file
 63
Author: lifeisfoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-13 19:04:06

Manta.js funciona perfecto también.

npm install --save-dev blanket

Delante de su prueba/pruebas.js

require('blanket')({
    pattern: function (filename) {
        return !/node_modules/.test(filename);
    }
});

Corre mocha -R html-cov > coverage.html

 18
Author: jsan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-01 21:13:02