1

我正在尝试为我的 NodeJs 代码编写单元测试。我正在使用 mockResolvedValue 模拟我的 API 调用。

这是我的单元测试:

const { search } = require("../src/utils");

jest.mock("axios");

test("Should find an user", async () => {
  axios.get.mockResolvedValue({
    data: [
      {
        userId: 1,
        name: "Mike",
      },
    ],
  });
  const phone = "123456789";
  const token = "ItIsAFakeToken"

  const name = await search(phone, token);
  expect(name).toEqual("Mike");
});

这是我的search功能

const searchContact = async (phone, token) => {
  const config = {
    method: "get",
    url: "https://userdatabase/api/search",
    token,
    params: {
      phone
    },
  };
  const response = await axios(config);
  return response.name;
}

它返回了“未定义”的响应,但是,如果我在不使用参数的情况下将 API 调用更改为以下代码config,我可以获得预期的数据。问题是我需要在真实代码中传递几个参数。

  const response = await axios.get("https://userdatabase/api/search");

请帮忙。谢谢你。

4

1 回答 1

1

我想通了原因。

在我的单元测试文件中,我使用axios.get.mockResolvedValue, 它应该是 axios.mockResolvedValue(remove get)。因为我没有axios.get在经过测试的方法中使用。

于 2021-01-11T21:24:55.997 回答