¿Cómo hacer que Estambul genere cobertura para todo mi código fuente?

Actualmente, Estambul solo está generando cobertura para los archivos que se usan en mis pruebas, lo cual está bien, pero parece anular el propósito de tener cobertura de alguna manera.

No tengo ninguna configuración de Estambul, y la npm test mediante la npm test con la siguiente secuencia de comandos:

$ istanbul cover _mocha -- -R dot --check-leaks --recursive test/

¿Hay alguna forma de generar cobertura para todo mi código fuente?

Encontré la respuesta, creo que en parte tengo suerte de que la estructura de directorios que he elegido me permita usar esta opción, pero mi comando de prueba es ahora:

$ istanbul --include-all-sources cover _mocha -- -R dot --recursive test/

La --include-all-sources es la parte importante.

Estambul recomienda usar nyc para verificar la cobertura del código. Sugiere un enfoque como este:

 nyc mocha 

Después de ejecutar este comando, obtendremos el informe de cobertura. Pero hay un par de trampas.

En primer lugar, por defecto, mocha está buscando pruebas en la test carpeta. Para anularlo, tenemos que establecer nuestra propia ruta en el archivo mocha.opts como este:

 nyc mocha --opts ./mocha.opts 

Y mocha.opts contiene dicho código, por ejemplo:

 spec/unit/back-end/**/*.spec.js 

Otro problema es que, de forma predeterminada, nyc comprueba la cobertura de solo los archivos requeridos, de lo que trata su pregunta. La solución es establecer dos opciones para nyc (ejecuto test como un script npm, así que configuro las opciones en package.json). Aquí está el código:

 "nyc": { "all": true, "include": [ "routes/*.js", "routes/**/*.js", "models/*.js" ] }, "scripts": { "mocha": "nyc mocha --opts ./mocha.opts", } 

Otra forma de lograrlo es establecer no include , pero exclude opción para excluir de la cobertura la verificación de archivos inapropiados. Es extraño, pero la única opción no funciona, requiere include o exclude opciones. Puede obtener más información sobre las opciones de nyc --help través de nyc --help .

PD: no sé nyc y mocha profundamente y solo estoy basado en mi propia experiencia.

Para generar cobertura para todos los archivos, tenga lo siguiente en su package.json

“istanbulCoverage”: ” nyc –reporter = lcov –reporter = text-lcov –all -x \” ./ node_modules / \ “-x \” ./ Cobertura / \ “check-cobertura –funciones 90 npm ejecutar prueba

Aquí, todas las marcas capturan todos los archivos en su proyecto. Si desea excluir archivos o carpetas específicos, puede utilizar la opción -x .

Aparte de esto, si desea especificar la tasa de cobertura para su aplicación, use la opción de cobertura de verificación para especificar el umbral. En mi caso, he especificado funciones para tener un umbral de cobertura del 90%. De lo contrario, la generación del informe de cobertura falla (estoy ejecutando mi prueba de karma después de la generación del informe de cobertura).

Espero que esto haya ayudado 🙂