Cobertura de código para Jest


Respuestas:


123

Cuando uso Jest 21.2.1 , puedo ver la cobertura del código en la línea de comando y crear un directorio de cobertura pasando --coverageal script Jest. A continuación hay algunos ejemplos:

Tiendo a instalar Jest localmente, en cuyo caso el comando podría verse así:

npx jest --coverage

Asumo (aunque no lo he confirmado), que esto también funcionaría si instalara Jest a nivel mundial:

jest --coverage

Los documentos muy escasos están aquí

Cuando navegué por el directorio de cobertura / lcov-report encontré un archivo index.html que se podía cargar en un navegador. Incluía la información impresa en la línea de comando, más información adicional y algunos resultados gráficos.


77
Nunca use módulos globales. Para garantizar la coherencia de la versión y la presencia del paquete, utilice siempre el ejecutable en node_modulesvia ./node_modules/.bin/jest --coverage. Siempre que el paquete se nombre en package.json, puede garantizar la ejecución con la versión exacta de broma que espera.
taystack

¿Cómo obtener cobertura de broma solo para archivos modificados?
Shanika Ediriweera

¿Existe una manera fácil de reprobar las pruebas si la cobertura está por debajo de cierto límite? Pregunta SO correspondiente: stackoverflow.com/questions/60512167/…
Stefan


88

ACTUALIZACIÓN: 20/07/2018 - Se agregaron enlaces y se actualizó el nombre de los Reporteros de cobertura.

ACTUALIZACIÓN: 14/08/2017 - Esta respuesta está totalmente desactualizada. Solo mira los documentos de Jest ahora. Tienen soporte oficial y documentación sobre cómo hacer esto.

@hankhsiao tiene un repositorio bifurcado donde Estambul está trabajando con Jest. Agregue esto a sus dependencias de desarrollo

 "devDependencies": {
     "jest-cli": "git://github.com/hankhsiao/jest.git"
 }

También asegúrese de que la cobertura esté habilitada en su entrada package.json jest y también puede especificar los formatos que desee. (El html es muy malo).

 "jest": {
     "collectCoverage": true,
     "coverageReporters": ["json", "html"],
 }

Consulte la documentación de Jest para ver los informes de cobertura (el valor predeterminado es ["json", "lcov", "text"])

O agregue --coveragecuando invoque broma.


1
Se ha eliminado la opción de cobertura de formatos: parece que json y html se generan cada vez.

1
Uso la opción --coverage pero no sucede absolutamente nada diferente.
gbbr

3
Se llama (ahora) coverageReportersy el valor predeterminado es ["json", "lcov", "text"]. Ver facebook.github.io/jest/docs/…
Karsten S.

no funciona, se encontró la opción desconocida "coverageFormats" con el valor ["json", "html"].
srghma

40

Ene 2019: Jest versión 23.6

Para cualquiera que esté investigando esta pregunta recientemente, especialmente si realiza pruebas usando npmo yarndirectamente

Actualmente, no tiene que cambiar las opciones de configuración

Según el sitio web oficial de jest , puede hacer lo siguiente para generar informes de cobertura:

1- Para npm:

Debe poner --antes de pasar el --coverageargumento de broma

npm test -- --coverage

si intentas invocar --coveragedirectamente sin el --no funcionará

2- Para hilo:

Puedes pasar el --coverageargumento de broma directamente

yarn test --coverage

1
¿Cómo obtener cobertura de broma solo para archivos modificados?
Shanika Ediriweera

¿Cambió desde cuándo? Probablemente quiera usar la --watchconfiguración para esto.
koehn

1
Esta respuesta hace muchas suposiciones sobre el estado de las mismas package.json.
airtonix

6

Muy bien, ignore mi respuesta anterior ya que alguien me dijo que no resolvió el problema.

Nueva respuesta:

1) Verifique la última broma (v 0.22): https://github.com/facebook/jest

2) El equipo de Facebook coloca a Estambul como parte del informe de cobertura y puede usarlo directamente.

3) Después de ejecutar jest, puede obtener un informe de cobertura en la consola y, en la carpeta raíz establecida por jest, encontrará el informe de cobertura en formato json y html.

4) Para su información, si instala desde npm, es posible que no obtenga la última versión; prueba el github primero y asegúrate de que la cobertura es lo que necesitas.


Vieja respuesta:

Tengo el mismo problema también. La respuesta corta es: Istanbuly JestNO están trabajando juntos.

Consulte las siguientes páginas para obtener más detalles:

https://github.com/facebook/jest/issues/101

jest usa contextify, que ejecuta scripts JS en un contexto V8 en código nativo, evitando todos los ganchos de Estambul y vm.runInThisContext. Por lo tanto, la cubierta de Estambul no funcionará, ya que las funciones estándar de node.js enganchables no se están utilizando y los archivos de preinstrucción tampoco ayudarán, ya que cada prueba se ejecuta en su propio entorno limitado y no hay un lugar global para guardar el objeto de cobertura.

@Ciro Costa: config.collectCoverageNO funciona, ya que es una función 'TODO'. Por favor verifique el código fuente.


La pregunta era cómo obtener la cobertura del Código para Jest. Que Estambul y Jest no funcionen juntos podría ser cierto, pero eso no responde la pregunta.
David Raab el

0

Si tiene problemas con: la cobertura no funciona, también puede deberse a que los Reporteros de cobertura estén habilitados sin que se agregue 'texto' o 'resumen de texto'. De los documentos: "Nota: la configuración de esta opción sobrescribe los valores predeterminados. Agregue" texto "o" resumen de texto "para ver un resumen de cobertura en la salida de la consola". Fuente


0

Configure su archivo package.json

"test": "broma --cobertura",

ingrese la descripción de la imagen aquí

Ahora ejecuta:

yarn test

Toda la prueba comenzará a ejecutarse y obtendrá el informe. ingrese la descripción de la imagen aquí


-1

Tuve el mismo problema y lo arreglé como se muestra a continuación.

  1. instalar hilo npm install --save-dev yarn
  2. instalar jest-cli npm install --save-dev jest-cli
  3. agregue esto al paquete.json "jest-coverage": "yarn run jest -- --coverage"

Después de escribir las pruebas ejecute el comando npm run jest-coverage Esto creará una carpeta de cobertura en el directorio raíz. /coverage/icov-report/index.html tiene la vista html de la cobertura del código.

¡Feliz codificación!


8
No hay necesidad de instalar hilo. Yarn es simplemente el administrador de paquetes diferente a NPM
Negro

-10

Prueba Chutzpah . Lo acabo de usar. Y escribí en un blog sobre cómo integrar en Visual Studio.

Así es como codifiqué la cobertura con Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


Chutzpath está construido sobre Blanket y especifiqué anteriormente que Jest no funciona con él.
Alex Palcuie

Interesante porque el mío simplemente funcionó. francorobles.wordpress.com/2014/09/14/…
francorobles

1
No estás utilizando Jest, que por defecto se burla de todos require.
Alex Palcuie
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.