Axios 模拟:收到的呼叫数:0

Axios mock: Received number of calls: 0

我正在尝试为我的 get All 做一个简单的模拟 method.I我收到这个错误:

预计调用次数: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() 创建一个新的 mock 函数,并且没有引用它用于创建的其他函数。因此,您需要明确定义您希望调用的模拟函数。例如。如果你想调用 post - 你需要按如下方式定义它:

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

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