react node_env example jestjs

jestjs - node_env - jest react install



¿Cómo ejecuto una sola prueba con Jest? (11)

Aquí está mi opinión:

./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t ''show expanded''

Notas:

  • ./node_modules/.bin/... es una forma maravillosa de acceder al binario jest (o mocha o ...) instalado localmente que viene con el paquete instalado localmente. (sí, en sus scripts npm puede jest con nada antes, pero esto es útil en la línea de comandos ... (eso también es un buen comienzo para su configuración de depuración, cualquier IDE que esté usando ...)
  • Es posible que su proyecto no tenga un conjunto de opciones de configuración. Pero si lo hace (echa un vistazo a los scripts en package.json ), esto es lo que necesitas.
  • --runInBand - como se dijo, no conozco tu configuración, pero si te concentras en desarrollar / arreglar una sola prueba, prefieres no tratar con trabajadores web ...
  • sí, puede dar la ruta completa y explícita a su archivo
  • opcionalmente , puede usar -t para no ejecutar todas las pruebas en ese archivo, sino solo una (aquí: la que tiene algo con '' show expanded '' en su nombre). Se puede lograr el mismo efecto .only() en ese archivo.

Tengo una prueba ''funciona con niños anidados'' dentro del archivo fix-order-test.js.

Ejecutar lo siguiente ejecuta todas las pruebas en el archivo.

jest fix-order-test

¿Cómo ejecuto una sola prueba? Lo siguiente no funciona, ya que busca un archivo de la expresión regular especificada.

jest ''works with nested children''


Comando completo para ejecutar una sola prueba de Jest

Mando:

node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"

  • <path-to-jest> :
    • Windows: node_modules/jest/bin/jest.js
    • Otros: node_modules/.bin/jest
  • -i <you-test-file> : ruta al archivo con pruebas ( js o ts )
  • -c <jest-config> : ruta a un archivo de configuración de Jest separado (JSON), si mantiene su configuración de Jest en package.json no tiene que especificar este parámetro (Jest lo encontrará sin su ayuda)
  • -t <the-name-of-test-block> : en realidad es un nombre (el primer parámetro) del -t <the-name-of-test-block> describe(...) , it(...) o test(...) .

Ejemplo:

describe("math tests", () => { it("1 + 1 = 2", () => { expect(1 + 1).toBe(2); }); it("-1 * -1 !== -1", () => { expect(-1 * -1).not.toBe(-1); }); });

Entonces, el comando

node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"

lo probará it("1 + 1 = 2", ...) , pero si cambia el parámetro -t a "math tests" , ejecutará ambas pruebas desde el bloque describe("math tests",...) .

Observaciones:

  1. Para Windows, reemplace node_modules/.bin/jest con node_modules/jest/bin/jest.js
  2. Este enfoque le permite depurar el script en ejecución. Para habilitar la debugging agregue ''--inspect-brk'' al comando.

Ejecutando una sola prueba de Jest a través de scripts NPM en ''package.json''

Una vez instalado Jest, puede simplificar la sintaxis de este comando (arriba) mediante el uso de scripts NPM . En "package.json" agregue un nuevo script a la sección "scripts" :

"scripts": { "test:math": "jest -i test/my-tests.js -t /"math tests/"", }

En este caso, usamos un alias ''jest'' lugar de escribir la ruta completa. Además, no especificamos la ruta del archivo de configuración ya que también podemos "package.json" en "package.json" y Jest la examinará de forma predeterminada. Ahora puedes ejecutar el comando:

npm run test:math

y se ejecutará el bloque "math tests" con dos pruebas. O, por supuesto, puede especificar una prueba en particular por su nombre.

Otra opción sería extraer el parámetro <the-name-of-test-block> fuera del script "test:math" y pasarlo desde el comando NPM:

package.json:

"scripts": { "test:math": "jest -i test/my-tests.js -t", }

Mando:

npm run test:math "math tests"

Ahora puede administrar el nombre de la (s) prueba (s) de ejecución con un comando mucho más corto.

Observaciones:

  1. El comando ''jest'' funcionará con scripts NPM porque

    npm hace que "./node_modules/.bin" la primera entrada en la PATH entorno PATH al ejecutar cualquier script de ciclo de vida, por lo que funcionará bien, incluso si su programa no está instalado globalmente ( blog NPM )

  2. Este enfoque no parece permitir la depuración porque Jest se ejecuta a través de su binario / CLI , no a través del node .

Ejecutando la prueba Jest seleccionada en Visual Studio Code

Si está utilizando Visual Studio Code, puede aprovecharlo y ejecutar la prueba seleccionada actualmente (en el editor de código) presionando el botón F5 . Para hacer esto, necesitaremos crear un nuevo bloque de configuración de inicio en el ".vscode/launch.json" . En esa configuración, utilizaremos variables predefinidas que se sustituyen con los valores apropiados (desafortunadamente no siempre ) cuando se ejecuta. De todos los disponibles solo nos interesan estos:

  • ${relativeFile} : el archivo abierto actual relativo a ${workspaceFolder}
  • ${selectedText} : el texto seleccionado actual en el archivo activo

Pero antes de escribir la configuración de lanzamiento, debemos agregar el script ''test'' en nuestro ''package.json'' (si aún no lo tenemos).

package.json:

"scripts": { "test": "jest" }

entonces podemos usarlo en nuestra configuración de lanzamiento.

Configuración de lanzamiento:

{ "type": "node", "request": "launch", "name": "Run selected Jest test", "runtimeExecutable": "npm", "runtimeArgs": [ "run-script", "test" ], "args": [ "--", "-i", "${relativeFile}", "-t", "${selectedText}" ], "console": "integratedTerminal", }

en realidad hace lo mismo que los comandos descritos anteriormente en esta respuesta. Ahora que todo está listo, podemos ejecutar cualquier prueba que queramos sin tener que reescribir los parámetros del comando manualmente.

Esto es todo lo que necesitas hacer:

  1. Seleccione la configuración de inicio creada actualmente en el panel de depuración:

  1. Abra el archivo con pruebas en el editor de código y seleccione el nombre de la prueba que desea probar (sin comillas):

  1. Presione ''F5'' botón ''F5'' .

¡Y voilá!

Ahora para ejecutar cualquier prueba que desee simplemente ábrala en el editor, seleccione su nombre y presione F5.

Desafortunadamente, no será "voila" en las máquinas con Windows porque sustituyen (quién sabe por qué) la variable ${relativeFile} con la ruta que ha invertido las barras inclinadas y Jest no entendería dicha ruta.

Observaciones:

  1. Para ejecutar bajo el depurador, no olvide agregar el ''--inspect-brk'' .
  2. En este ejemplo de configuración, no tenemos el parámetro de configuración de Jest suponiendo que esté incluido en ''package.json'' .

Ahora hay un buen complemento de broma para este llamado jest-watch-typeahead que hace que este proceso sea mucho más simple.


Como se dijo anteriormente, puede ejecutar el comando

jest -t ''fix-order-test''

Si tiene un it dentro de un bloque describe , debe ejecutar

jest -t ''<describeString> <itString>''


Como se menciona en otras respuestas, test.only simplemente filtra otras pruebas en el mismo archivo . Entonces las pruebas en otros archivos aún se ejecutarán. 👎

Entonces, para ejecutar una sola prueba, hay dos enfoques:

Opción 1: si el nombre de su prueba es único, puede ingresar t mientras está en modo de observación e ingresar el nombre de la prueba que desea ejecutar.

Opcion 2:

  1. Presione p mientras está en modo reloj para ingresar una expresión regular para el nombre de archivo que desea ejecutar. (Los comandos relevantes como este se muestran cuando ejecuta Jest en modo reloj).
  2. it.only en la prueba que desea ejecutar.

Con cualquiera de los enfoques anteriores, Jest solo ejecutará la prueba individual en el archivo que ha especificado. 👍


Desde la línea de comando, use el --testNamePattern o -t

jest -t ''fix-order-test''

Esto solo ejecutará pruebas que coincidan con el patrón de nombre de prueba que proporcione. Está en los documentos de Jest .

Otra forma es ejecutar pruebas en modo reloj jest --watch y luego presione p para filtrar las pruebas escribiendo el nombre del archivo de prueba o t para ejecutar un solo nombre de prueba.


En VS Code, esto me permite ejecutar / depurar solo 1 prueba de Jest, con puntos de interrupción: https://github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests

Mi launch.json tiene esto dentro:

"scripts": { "test": "jest" }

y esto en package.json :

npm test -- -t "fix order test"

  • Para ejecutar 1 prueba, en esa prueba, cambie test (o it ) a test.only (o it.only ). Para ejecutar 1 conjunto de pruebas (varias pruebas), cambie describe a describe.only .
  • Establezca puntos de interrupción si lo desea.
  • En VS Code, vaya a Vista de depuración (Shift + Cmd + D).
  • Desde el menú desplegable en la parte superior, seleccione Jest Current File .
  • Haga clic en la flecha verde para ejecutar esa prueba.

Si tiene jest ejecutándose como un comando de script, algo así como npm test , debe usar el siguiente comando para que funcione:

{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Jest All", "program": "${workspaceFolder}/node_modules/.bin/jest", "args": ["--runInBand"], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "windows": { "program": "${workspaceFolder}/node_modules/jest/bin/jest", } }, { "type": "node", "request": "launch", "name": "Jest Current File", "program": "${workspaceFolder}/node_modules/.bin/jest", "args": ["${relativeFile}"], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "windows": { "program": "${workspaceFolder}/node_modules/jest/bin/jest", } } ] }


También puede usar f o x para enfocar o excluir una prueba. Por ejemplo

fit(''only this test will run'', () => { expect(true).toBe(false); }); it(''this test will not run'', () => { expect(true).toBe(false); }); xit(''this test will be ignored'', () => { expect(true).toBe(false); });


con la última versión de jest , puede usar uno de los siguientes para ejecutar solo una prueba, la misma para el conjunto de pruebas.

it.only(''test 1'', () => {}) test.only(''test 1'', () => {}) fit(''test 1'', () => {})

jest ''test 1'' puede funcionar si el nombre de la prueba es único.


La documentación de Jest recomienda lo siguiente:

Si una prueba falla, una de las primeras cosas que debe verificar es si la prueba falla cuando es la única prueba que se ejecuta. En Jest es simple ejecutar solo una prueba: solo cambie temporalmente ese comando de test por una test.only

test.only(''this will be the only test that runs'', () => { expect(true).toBe(false); });