0

我想测试以下功能

export async function getIdToken() {
  const currentUser = firebase.auth().currentUser;
  if (currentUser) {
    return currentUser.getIdToken();
  } else {
    return undefined;
  }
}

export async function getSomethingViaHTTPS() {
  const idToken = await getIdToken();
  const response = await fetch("https://someURL.com", {
    method: "GET",
    headers: { Authorization: "Bearer " + idToken }
  });
  if (response.status === 200) {
    return await response.json();
  }

  throw new Error("failed to fetch data breaches: " + response.status + ": " + (await response.text()));
}

现在我不知道如何测试它,因为在测试期间当前用户将是未定义的。有没有办法模拟当前用户?这是我的测试功能:

describe("something via https", () => {
  const mockGetSomethingAPI = responseBody => {
    fetchMock.once(req => {
      if (req.url !== "https://someURL.com") {
        return Promise.reject({});
      }
      return Promise.resolve(JSON.stringify(responseBody));
    });
  };

  it("get something", async () => {
    mockGetSomethingAPI({ "something": "some text" });
    expect(await mockGetSomethingAPI()).toEqual({ something: "testestest" });
  });
});
4

0 回答 0