No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

脷ltima oportunidad para asegurar tu aprendizaje por 1 a帽o a precio especial

Antes: $249

Currency
$189/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

0D
20H
19M
12S

Integration Test

22/27
Recursos

Aportes 4

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

ERROR

Si llegan a tener este error:

顐 ~/.../testing-js/api 顐 顐 master 鈼 顐 npm run test:e2e

> [email protected] test:e2e
> jest --config ./e2e/jest-e2e.json --forceExit

 PASS  e2e/hello.e2e.js
 FAIL  e2e/books.e2e.js
  鈼 Test suite failed to run

    ReferenceError: Cannot access 'mockGetAll' before initialization

      13 | jest.mock('../src/lib/mongo.lib', () => jest.fn().mockImplementation(() => ({
      14 |   // Metodos a suplantar.
    > 15 |   getAll: mockGetAll,
         |           ^
      16 |   create: () => {},
      17 | })));
      18 |

      at mockConstructor.<anonymous> (books.e2e.js:15:11)
      at new BooksService (../src/services/books.service.js:6:20)
      at Object.<anonymous> (../src/routes/books.router.js:5:17)

Test Suites: 1 failed, 1 passed, 2 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        2.384 s
Ran all test suites.
Force exiting Jest: Have you considered using `--detectOpenHandles` to detect async operations that kept running after all tests finished?

Yo lo solucion茅 declarando mockGetAll arriba de las importaciones as铆:


// Esta es una prueba de integraci贸n, pero lleva la extensi贸n e2e.js para que...
// ... lo ejecute testRegex del archivo de configuraci贸n de Supertest (jest-e2e.json).

const mockGetAll = jest.fn(); // Toc贸 subirla para que la llame bien en el test.

const request = require('supertest');

const { generateManyBook } = require('../src/fakes/book.fake');

const createApp = require('../src/app');

Ojo: generateManyBook no puede importarse encima de request.

  • Profe @nicobites, ser谩 que lo hice bien?, porque creo que ca铆 en una mala pr谩ctica pero funciona.

El que no se haya equivocado en un caracter programando que lance la primera piedra jaja

otra forma de resolverlo usando "async/await鈥 :

describe('test for [GET]/api/v1/books', () => {
    test('should return the list books', async () => {
      // arrange
      const fakeBooks = generateManyBooks(3);
      mockGetAll.mockResolvedValue(fakeBooks);
      // Act
      const response = await request(app).get('/api/v1/books');
      console.log(response);
      // Assert
      expect(response.body.length).toEqual(fakeBooks.length);
    });
  });

Nota importante, si en el minuto 4 no les corre el test como al profe, es por que deben tener arriba el docker con la base de datos