Cobertura de código para Broma


¿Hay alguna forma de tener cobertura de código en el framework de pruebas Jest de Javascript que está construido sobre Jasmine?

El framework interno no imprime la cobertura de código que obtiene. También he intentado usar Estambul, blanket y JSCover, pero ninguno de ellos funciona.

Author: treznik, 2014-07-18

5 answers

ACTUALIZACIÓN: 20/7/2018-Se agregaron enlaces y se actualizó el nombre de coverageReporters.

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

@hankhsiao tiene un repositorio bifurcado donde Estambul está trabajando con Jest. Añade esto a tus dependencias de desarrollo

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

También asegúrese de que la cobertura esté habilitada en su paquete.json jest entrada y también puede especificar los formatos que desee. (HTML es bastante malo culo).

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

Ver Documentación de Jest para coverageReporters (por defecto es ["json", "lcov", "text"])

O agregue --coverage cuando invoque jest.

 47
Author: Adrian Adkison,
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-07-20 09:23:32

Al usar Jest 21.2.1, puedo ver la cobertura de código en la línea de comandos y crear un directorio de cobertura pasando coverage coverage al script jest. A continuación se presentan algunos ejemplos.

Tiendo a instalar Jest localmente, en cuyo caso el comando podría tener este aspecto:

Node_modules/.bin / jest coverage cobertura

Asumo, pero no he confirmado, que esto también funcionaría si instalara Jest globalmente:

Broma coverage cobertura

Los documentos muy escasos son aquí

Cuando navegué en el directorio coverage/lcov-report encontré un índice .archivo html que podría cargarse en un navegador. Incluía la información impresa en la línea de comandos, además de información adicional y algunos resultados gráficos.

 10
Author: ccalvert,
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-10-24 19:39:39

Muy bien, ignore mi respuesta anterior ya que alguien me dijo que no resolvía el problema.

Nueva respuesta:

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

2) El equipo de Facebook pone el estambul como parte del informe de cobertura y puede usarlo directamente.

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

4) Para su información, si instala desde npm, es posible que no obtenga la última versión; así que pruebe el github primero y asegúrese de que la cobertura es lo que necesita.


Antigua respuesta:

También tiene el mismo problema. La respuesta corta es: Istanbul y Jest NO 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 así todos los requisitos de istanbul y vm.Ejecutar en estos ganchos de texto. Así que la cobertura de estambul no funcionará desde el nodo conectable estándar.las funciones js no se están utilizando y los archivos de preinstrumentación tampoco ayudarán, ya que cada prueba se ejecuta en su propio sandbox y no hay un entorno global en el que almacenar el objeto de cobertura.

@ Ciro Costa: El config.collectCoverage NO está funcionando, ya que es una función 'TODO'. Por favor, compruebe el código fuente.

 4
Author: Winters,
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
2015-02-17 06:57:59

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. añada 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 de código.

Feliz codificación!

 0
Author: Laksh,
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-10-11 09:50:23

Intenta Descaro. Acabo de usarlo. Y escribí en un blog sobre cómo integrar en Visual Studio.

Así es como hice la cobertura de código con Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah /

 -4
Author: francorobles,
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
2016-12-23 03:22:21