done
es un callback especial que Jest proporciona a los tests asincrónicos cuando no estás usando async/await
o promesas directamente.
Se usa para decirle a Jest que debe esperar a que el test termine manualmente, en lugar de asumir que se completó automáticamente.
done
?Porque Jest, por defecto, marca el test como terminado cuando el cuerpo de la función termina de ejecutarse. Pero si dentro del test hay código asincrónico (por ejemplo: setTimeout
, callbacks
, peticiones simuladas), Jest puede cerrar el test antes de que tu código realmente termine, y eso provoca falsos positivos o falsos negativos.
done()
permite decirle a Jest: “no termines este test todavía, te aviso manualmente cuando haya terminado”.
done
(error común):
done
:
done()
?Jest espera indefinidamente hasta que se agote el tiempo de espera (timeout
) y marca el test como fallido con error de timeout.
done()
antes del expect()
?
done
para verificar errores asincrónicosSi hay un error dentro de un código asincrónico, debes capturarlo y pasar el error a done(error)
para que Jest lo detecte correctamente.