Tengo una función de manejo de errores que envuelve llamadas de recuperación y me permite manejar errores sin tantos bloques de prueba/captura.
const errorHandler = (promise) => promise .then((data) => ({ ok: true, data })) .catch((error) => Promise.resolve({ ok: false, error }));Estoy tratando de agregar una prueba a esta función con jest , tengo trabajadores de servicio que interceptan las solicitudes de recuperación y generan una respuesta simulada que funciona bien, pero parece que con jest no entiendo cómo probarlo porque la función captura el catch pero devuelve una nueva promesa resuelta inmediatamente.
esta es la forma en que estoy tratando de probar:
test("It should return result.ok === false", async () => { // this function works correctly with the msw library server.use( rest.get("http://localhost:3001/categories", (req, res, ctx) => { return res(ctx.status(500)); }) ); return await expect( errorHandler((await fetch("http://localhost:3001/categories")).json()) ).rejects.toEqual({"error": "[SyntaxError: Unexpected end of JSON input]", "ok": false}); }); }); He intentado probar con toEqual(value) y .toMatchObject(object) pero la prueba no pasa y este es el resultado.
● Tests in errorHandler() › It should return result.ok === false expect(received).rejects.toEqual() Received promise resolved instead of rejected Resolved to value: {"error": [SyntaxError: Unexpected end of JSON input], "ok": false}gracias de antemano.