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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?