我有以下健康檢查功能
export default function handler(req, res) {
res.status(200).json({ message: "Hello from Next.js!" });
}
我有以下測驗
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);
});
});
我想檢查該函式是否正在被呼叫并且狀態為 200,我知道我需要模擬該函式,但是,我如何正確地模擬這樣的帶有請求和回應的函式。
uj5u.com熱心網友回復:
該handler函式接受一個res引數,您可以在測驗期間模擬并傳遞給handler呼叫。然后,您可以驗證已正確呼叫模擬。
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!"
});
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/477577.html
標籤:javascript 单元测试 开玩笑的 下一个.js
