Tengo la siguiente función de verificación de salud
export default function handler(req, res) { res.status(200).json({ message: "Hello from Next.js!" }); }y tengo la siguiente prueba
import handler from "./healthcheck" describe("Healthcheck", () => { test("that the application is live with a status of 200", () => { const mockFn = jest.fn({ status: jest.fn(), json: jest.fn() }); expect(mockFn).toHaveBeenCalledWith(); expect(mockFn.status).toBe(200); }); });Quiero comprobar que se está llamando a la función y que el estado es 200, sé que necesito simular la función, sin embargo, ¿cómo puedo simular correctamente funciones como esta con una solicitud y una respuesta?
La función del handler acepta un parámetro res que puede simular y pasar a la llamada del handler durante la prueba. Luego puede verificar que los simulacros se hayan llamado correctamente.
import handler from "./healthcheck" describe("Healthcheck", () => { test("that the application is live with a status of 200", () => { const resMock = { status: jest.fn() }; // Mocks `res` const resStatusMock = { json: jest.fn() }; // Mock `res.status` resMock.status.mockReturnValue(resStatusMock); // Makes `res.status` return `resStatusMock` handler(undefined, resMock); expect(resMock.status).toHaveBeenCalledWith(200); expect(resStatusMock.json).toHaveBeenCalledWith({ message: "Hello from Next.js!" }); }); });