Axios mock: Received number of calls: 0



我正试图为我的get All方法做一个简单的模拟。我得到这个错误:

预期呼出数:1已接电话数:0

下面是我的模拟配置。

jest.mock("axios", () => {
return {
create: jest.fn(() => ({
get: jest.fn(() => Promise.resolve({ data: [{ name: "test_role" }] })),
post: jest.fn(() => Promise.resolve({ data: { name: "test_role" } })),
put: jest.fn(() => Promise.resolve({ data: { name: "updated_role" } })),
delete: jest.fn(() => Promise.resolve({ data: "" })),
interceptors: {
request: { use: jest.fn(), eject: jest.fn() },
response: { use: jest.fn(), eject: jest.fn() },
},
})),
};
});

下面是我的测试:

it("get all roles", async () => {
//Arrange
const allRoles = [{ name: "test_role" }];
//Act
const result = await role.getAll();
//Assert
expect(JSON.stringify(result.data)).toBe(JSON.stringify(allRoles));
expect(jest.fn()).toHaveBeenCalledTimes(1);
});

jest.fn()创建一个新的模拟函数,并且没有对它用来创建的其他函数的引用。因此,您需要显式地定义您希望调用的模拟函数。例如,如果你想调用post,你需要这样定义:

expect(axios.create.post).toHaveBeenCalledTimes(1);

您可以重用此语法以期望其他方法调用。

最新更新