¿Cómo puedo ejecutar una sola prueba usando Jest?


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

Ejecutando lo siguiente se ejecutan todas las pruebas en el archivo.

jest fix-order-test

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

jest 'works with nested children'
 89
Author: vijayst, 2017-03-16

8 answers

Desde la línea de comandos use la bandera --testNamePattern o -t

jest -t 'fix-order-test'

Esto ejecutará toda la prueba pero omitirá las que no coincidan con el nombre de la prueba. En el docs

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

 111
Author: Andreas Köberle,
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-06-29 17:09:36

Jest documentation recomienda lo siguiente:

Si una prueba está fallando, una de las primeras cosas a comprobar debe ser si la prueba está fallando cuando es la única prueba que se ejecuta. En Broma es simple ejecutar solo una prueba-solo cambia temporalmente eso test orden a test.only

test.only('this will be the only test that runs', () => {
  expect(true).toBe(false);
});
 41
Author: flaky,
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-01-04 22:50:02

Como se mencionó en otras respuestas, test.only simplemente filtra otras pruebas en el mismo archivo. Por lo tanto, las pruebas en otros archivos seguirán ejecutándose.

Así que para ejecutar una sola prueba, hay dos enfoques:

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

Opción 2:

  1. Pulsa p mientras estás en modo watch para introducir una expresión regular para el nombre de archivo que deseas ejecutar. (Comandos relevantes como este se muestran cuando se ejecuta Jest en modo watch).
  2. Cambie it a it.only en la prueba que desea ejecutar.

Con cualquiera de los enfoques anteriores, Jest solo ejecutará la prueba única en el archivo que haya especificado.

 21
Author: Cory House,
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-02-14 17:27:59

También puedes 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);
});
 4
Author: Nima Soroush,
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-06-06 20:33:56

Como se dijo anteriormente, puede ejecutar el comando

jest -t 'fix-order-test'

Si tienes un it dentro de un bloque describe, tienes que ejecutar

jest -t '<describeString> <itString>'
 2
Author: Wladimir Gramacho,
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-08-08 14:18:52

Con la última versión de jest, puede usar uno de los siguientes para ejecutar solo una prueba, lo mismo para test suite.

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

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

fit('test 1', () => {})

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

 1
Author: schrodinger's code,
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-08-10 12:22:10

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 a la jest instalada localmente (o mocha o...) binario que venía con el paquete instalado localmente. (sí, en sus scripts npm puede jest sin 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, sea cual sea el IDE que esté utilizando...)
  • es posible que su proyecto no tenga un conjunto de opciones de configuración. Pero si lo hace (echar un vistazo a la scripts en package.json), esto es, lo que necesita.
  • --runInBand – como se ha dicho, no sé acerca de su configuración, pero si se concentra en el desarrollo/la fijación de una sola prueba, que en lugar de querer tratar con los 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). El mismo efecto se puede lograr por pegando .only() en ese archivo.
 0
Author: Frank Nocke,
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-08-09 11:03:59

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:

{
  "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",
      }
    }
  ]
}

Y esto en package.json:

  "jest": {
    "testEnvironment": "node"
  }
  • 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 el(los) punto (s) de interrupción si lo desea.
  • En VS Code, vaya a la vista de depuración (Mayús + Cmd + D).
  • Desde el menú desplegable en la parte superior, elija Jest Current File.
  • Haga clic en flecha verde para ejecutar esa prueba.
 0
Author: Raymond Gan,
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-09-13 20:32:28