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 puedejest
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
-
Windows:
-
-i <you-test-file>
: ruta al archivo con pruebas (js
ots
) -
-c <jest-config>
: ruta a un archivo de configuración de Jest separado (JSON), si mantiene su configuración de Jest enpackage.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(...)
otest(...)
.
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:
-
Para Windows, reemplace
node_modules/.bin/jest
connode_modules/jest/bin/jest.js
-
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:
-
El comando
''jest''
funcionará con scripts NPM porquenpm hace que
"./node_modules/.bin"
la primera entrada en laPATH
entornoPATH
al ejecutar cualquier script de ciclo de vida, por lo que funcionará bien, incluso si su programa no está instalado globalmente ( blog NPM ) -
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:
- Seleccione la configuración de inicio creada actualmente en el panel de depuración:
- Abra el archivo con pruebas en el editor de código y seleccione el nombre de la prueba que desea probar (sin comillas):
-
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:
-
Para ejecutar bajo el depurador, no olvide agregar el
''--inspect-brk''
. -
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:
-
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). -
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
(oit
) atest.only
(oit.only
). Para ejecutar 1 conjunto de pruebas (varias pruebas), cambiedescribe
adescribe.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 unatest.only
test.only(''this will be the only test that runs'', () => { expect(true).toBe(false); });