Miguel Andrés Ferreira Sandoval
El que no se haya equivocado en un caracter programando que lance la primera piedra jaja
Rubén Ernesto Aragón Gil
Así es padrino, yo por mover una letra no me daba más que error jaja
ERROR
Si llegan a tener este error:
~/.../testing-js/api master ● npm run test:e2e > api@1.0.0 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.
Miguel Andrés Ferreira Sandoval
El que no se haya equivocado en un caracter programando que lance la primera piedra jaja
Rubén Ernesto Aragón Gil
Así es padrino, yo por mover una letra no me daba más que error jaja
Gilberto Santamaria
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
Edgar Mauricio Pérez Rojas
¿Profe @nicobites, en la sección de aportes dejé un error que me salió, será que lo hice bien?, porque creo que caí en una mala práctica, pero funciona, sumercé tiene otra solución?
Jose Gabriel Argüello
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); }); });
Joaquin Araujo
¿Quien sabe donde esta el link para ver el repo?
Nicolas Molina
ProfesorHola, mira este es el link https://github.com/platzi/curso-testing-js
angel mundo
La prueba de integración (integration test) es un tipo de test en la que se verifica la interacción entre diferentes componentes de un sistema. A diferencia de las pruebas unitarias, que evalúan una única parte del código, las pruebas de integración aseguran que múltiples módulos funcionan juntos como se espera. Esto se realiza simulando las interacciones entre los componentes, como la comunicación entre una API y la base de datos, para identificar problemas de integración que podrían no ser evidentes en pruebas aisladas.
Alejandro Paladines
Si tienes el error
ReferenceError: Cannot access 'mockSpyGetAll' before initialization 6 | 7 | jest.mock('../src/lib/mongo.lib', () => jest.fn().mockImplementation(() => ({ > 8 | getAll: mockSpyGetAll, | ^ 9 | create: () => {}, 10 | }))); 11 |
Debes declarar los mocks antes que el createApp
const mockSpyGetAll = jest.fn(); jest.mock('../src/lib/mongo.lib', () => jest.fn().mockImplementation(() => ({ getAll: mockSpyGetAll, create: () => {}, }))); const createApp = require('../src/app');