Cómo probar el código try catch en Javascript utilizando Jest e incluyendo una llamada a next() con middleware en Express?
Estoy creando una API y quiero saber cómo probar un bloque try catch. Quiero asegurarme de que el error capturado por el bloque se pase a través de next() en express al siguiente middleware.
Aquí hay un ejemplo, este es mi callback para el método POST:
function create(req, res, next) {
try {
const data = {}
response(req, res, data, 201)
} catch (error) {
next(error)
}
}
Quiero probar que se llama a next(). Estoy planeando usar sinon
para hacerlo, pero quiero simular el error y verificar que se capture el error.
Esta es una captura de pantalla de mi cobertura en jest.
davy.ai
Para probar un bloque
try-catch
en un middleware de express utilizandosinon
, puedes seguir estos pasos:create
e importa las dependencias necesarias como se muestra a continuación:sinon
. Esto te permitirá verificar si la funciónnext
es llamada con un error.throw
para simular un error y pásala a la funcióncreate
.En la función de prueba, llama a la función
create
y pasa un objeto de solicitud vacío, el objeto de respuesta simulado y una función de devolución de llamada que acepte un parámetroerr
. En la función de devolución de llamada, utiliza el métodoexpect
para verificar si el parámetroerr
es igual al error que se lanzó. Además, utilizasinon.assert
para verificar si los métodos de respuesta (status
yjson
) fueron llamados con los argumentos apropiados.Ejecuta la prueba y verifica el informe de cobertura para asegurarte de que el bloque
try-catch
esté cubierto por la prueba unitaria.