es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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”

Tags:  , , ,

Answer

  1. Avatar for 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 usar jest.setTimeout para aumentar el valor del timeout. En este caso, el timeout se ha aumentado a 20000 ms (20 segundos) en el hook afterAll.

    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.

Comments are closed.