Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Setup and Teardown

9/27
Recursos

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

  • beforeAll(): se ejecuta antes de todas las pruebas.
  • beforeEach(): se ejecuta antes de cada prueba.
  • afterEach(): se ejecuta después de cada prueba.
  • afterAll(): se ejecuta después de todas las pruebas
    Nota:
    Todas estas funciones se ejecutan dentro del alcance del scope.

Esto explica muchas cosas. xDD
Encontraba ejemplos con estos hooks y no entendía nada.

Resumen

setup/Teardown

En Jest hay cláusulas para isolar las pruebas, donde un escenario de pruebas no afecte a otro, para ello se agrupan los casos con describe().
Teardown se trata de demoler o quitar casos de prueba anteriores para que no afecten en el actual al usar los hooks, que son sentencias adicionales según el tiempo de ejecución del grupo o los casos.

Codigo comentado


// describe reune un conjunto de bruebas, mejora la lectura del código y la encapsulación.
describe('gruop 1', () => {
  // beforeAll es una sentencia [setup] que corre antes de todas las pruebas xej up db
  // este tipo de utilidad se puede llamar hook y respeta el alcance o scope del grupo (describe).
  beforeAll(() => {
    console.log('beforeAll');
    // up db
  });
  // afterAll es lo mismo pero después XD.
  afterAll(() => {
    console.log('afterAll');
    // down db
  });
  // beforeEach corre antes de cada caso de prueba hasta el último.
  beforeEach(() => {
    console.log(beforeEach);
  });
  // afterEach es lo mismo pero después XD.
  afterEach(() => {
    console.log(afterEach);
  });
  // eslint-disable-next-line no-trailing-spaces

  test('case 1', () => {
    console.log('case 1');
    expect(1 + 1).toBe(2);
  });
  test('case 2', () => {
    console.log('case 2');
    expect(1 + 3).toBe(4);
  });

  // En pruebas estáticas en producción es mala práctica poner console.log.

  describe('group 2', () => {
    beforeAll(() => {
      console.log('beforeAll 2');
      // up db
    });
    test('case 3', () => {
      console.log('case 3');
      expect(1 + 1).toBe(2);
    });
    test('case 4', () => {
      console.log('case 4');
      expect(1 + 3).toBe(4);
    });
  });
});

  • OUT Terminal
 ~/.../testing-js/demos   master ●  npm run test

> [email protected]1.0.0 test
> jest

 PASS  src/05-setup.test.js
  ● Console

    console.log
      beforeAll

      at Object.log (src/05-setup.test.js:7:13)

    console.log
      [Function: beforeEach]

      at Object.log (src/05-setup.test.js:17:13)

    console.log
      case 1

      at Object.log (src/05-setup.test.js:26:13)

    console.log
      [Function: afterEach]

      at Object.log (src/05-setup.test.js:21:13)

    console.log
      [Function: beforeEach]

      at Object.log (src/05-setup.test.js:17:13)

    console.log
      case 2

      at Object.log (src/05-setup.test.js:30:13)

    console.log
      [Function: afterEach]

      at Object.log (src/05-setup.test.js:21:13)

    console.log
      beforeAll 2

      at Object.log (src/05-setup.test.js:38:15)

    console.log
      [Function: beforeEach]

      at Object.log (src/05-setup.test.js:17:13)

    console.log
      case 3

      at Object.log (src/05-setup.test.js:42:15)

    console.log
      [Function: afterEach]

      at Object.log (src/05-setup.test.js:21:13)

    console.log
      [Function: beforeEach]

      at Object.log (src/05-setup.test.js:17:13)

    console.log
      case 4

      at Object.log (src/05-setup.test.js:46:15)

    console.log
      [Function: afterEach]

      at Object.log (src/05-setup.test.js:21:13)

    console.log
      afterAll

      at Object.log (src/05-setup.test.js:12:13)

 PASS  src/04-assertions.test.js
 PASS  src/02-math.test.js
 PASS  src/01-sum.test.js

Test Suites: 4 passed, 4 total
Tests:       18 passed, 18 total
Snapshots:   0 total
Time:        0.761 s, estimated 1 s
Ran all test suites.