Tengo una configuración simple en server.test.js
import 'regenerator-runtime/runtime'; const request = require('supertest'); const express = require("express") const app = express(); app.get('/user', function(req, res) { res.status(200).json({ name: 'john' }); }); describe('GET /user', function() { it('responds with json', async function(done) { const response = await request(app) .get('/user') expect(response.status).toBe(201) }) }) npx jest y recibir thrown: "Exceeded timeout of 5000 ms for a test., Aumentar el tiempo de espera no ayuda en jest.config.js a testTimeout: 20000, espera los 20 y también falla
¿Por qué la aplicación express comienza con un superconjunto? Usé un ejemplo del README oficial
Intente eliminar done de la devolución de llamada de prueba:
it('responds with json', async function() { const response = await request(app) .get('/user') expect(response.status).toBe(201) })Jest puede estar esperando que lo llamen.
En general, se recomienda que use una función async o que done . Jest normalmente advierte si los mezcla, no estoy seguro de por qué no lo hace con esta configuración.
Alternativamente, puede intentar llamar a done() al final de la prueba.
Debe esperar que la prueba falle porque el estado que se publica es 200 y está buscando 201 .