如何在传奇中测试Firebase功能?

时间:2020-05-04 13:02:19

标签: reactjs unit-testing redux firebase-authentication redux-saga

我正在尝试测试以下功能:

export function* signInWithEmail({ payload: { email, password } }) {
  try {
    const { user } = yield auth.signInWithEmailAndPassword(email, password);
    yield call(getSnapShotFromUserAuth, user);
  } catch (error) {
    yield put(signInFailure(error));
  }
}

我已经研究了redux-saga-test-plan以及其他的传奇测试库,但似乎无法弄清楚如何在不使用传奇效果调用Firebase函数的情况下进行测试。

我需要一种方法来同时模拟firebase函数,以便能够测试此行是否被称为yield call(getSnapShotFromUserAuth, user);

1 个答案:

答案 0 :(得分:0)

必须将jest.spyOn用于firebase函数,然后验证下一步。答案如下:

it("should call getSnapShotFromUserAuth", () => {
    let userData = {
      user: {
        id: 1,
        name: "jon",
      },
    };

    let { user } = userData;

    jest
      .spyOn(auth, "signInWithEmailAndPassword")
      .mockImplementation(() => userData);

    let saga = testSaga(signInWithEmail, { payload });
    saga
      .next()
      .next({ user })
      .call(getSnapShotFromUserAuth, user)
      .next()
      .isDone();
  });
相关问题