Tengo la siguiente configuración de prueba:
describe(`my tests`, () => { describe(`Should not run`, () => { console.log(`Should not be printed`); describe(`Should also not run`, () => { console.log(`Should also not be printed`); test(`Then an exception is thrown`, () => { console.log(`Should definitely not be printed`); throw new Error(`whoops`); }) }) describe(`Should run`, () => { console.log(`Should run`) test(`Then I should get this list in the format I expect`, () => { console.log(`Should definitely be printed`); }) }) describe(`Should not run`, () => { console.log(`Should not be printed`); test(`Then I should get an empty list`, () => { throw new Error(`whoops`); }) }) }) }) Cuando le pido a IntelliJ que solo ejecute la prueba del caso test('Then I should get this list in the format I expect') , todavía obtengo el siguiente resultado:
> Should not be printed > Should also not be printed > Should run > Should not be printed > Should definitely be printed ¿Cómo es que se está ejecutando el código de los otros bloques de describe ? Pensé que el bloque de describe le permitía configurar la prueba de alcance para que solo se ejecutara para las pruebas dentro de ese bloque específico.
Parece que este es el comportamiento estándar y documentado :
Jest ejecuta todos los controladores de descripción en un archivo de prueba antes de ejecutar cualquiera de las pruebas reales. Esta es otra razón para realizar la configuración y el desmontaje dentro de los controladores antes* y después* en lugar de dentro de los bloques de descripción. Una vez que se completan los bloques de descripción, de forma predeterminada, Jest ejecuta todas las pruebas en serie en el orden en que se encontraron en la fase de recopilación, esperando que cada una termine y se ordene antes de continuar.