Как проверить функции Firebase в саге? - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь проверить приведенную ниже функцию:

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 голосов
/ 04 мая 2020

Пришлось использовать 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();
  });
...