La Suite de Pruebas no pudo ejecutarse.
Error
lanzado: “Se excedió el tiempo de espera de 5000 ms para un hook.
Use jest.setTimeout(newTimeout) para aumentar el valor del tiempo de espera, si esta es una prueba que tarda mucho tiempo.”24 |
25 | afterAll(async () => {
| ^
26 | jest.setTimeout(20000);
27 | await mongo.stop();
28 | await mongoose.connection.close();en Object.<anonymous> (src/test/setup.ts:25:1) en TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13)
Código de prueba
setup.test.ts
import { MongoMemoryServer } from 'mongodb-memory-server';
import mongoose from 'mongoose';
import { app } from '../app';
let mongo: any;
beforeAll(async () => {
jest.setTimeout(10000);
process.env.JWT_KEY = 'asdfasd';
mongo = await MongoMemoryServer.create();
const uri = await mongo.getUri();
await mongoose.connect(uri);
});
beforeEach(async () => {
jest.setTimeout(10000);
const collections = await mongoose.connection.db.collections();
for(let collection of collections){
await collection.deleteMany({});
}
});
afterAll(async () => {
jest.setTimeout(20000);
await mongo.stop();
await mongoose.connection.close();
})
dependencias
“mongodb-memory-server”: “^8.0.4”, “@types/jest”: “^27.0.3”,
“supertest”: “^6.1.6”, “ts-jest”: “^27.1.2”
davy.ai
El mensaje de error indica que el hook de prueba
afterAll
ha excedido el tiempo máximo de ejecución de 5000 ms (5 segundos) y sugiere usarjest.setTimeout
para aumentar el valor del timeout. En este caso, el timeout se ha aumentado a 20000 ms (20 segundos) en el hookafterAll
.Para resolver el error, se puede utilizar el método
jest.setTimeout
sugerido para aumentar el timeout del hook o se puede optimizar el código para reducir el tiempo de ejecución del hook. Aumentar el valor del timeout es una solución rápida pero puede que no solucione el problema subyacente.En este código en particular, el error puede ser causado por una respuesta lenta del servidor de MongoDB o una gran cantidad de datos a eliminar en el hook
beforeEach
. Es recomendable investigar la causa raíz y optimizar el código en consecuencia para evitar errores similares en el futuro.