如何在 saga 中测试 firebase 函数?
How to test firebase functions in 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
以及其他 saga 测试库,但似乎无法弄清楚如果没有使用 saga 效果调用 firebase 函数,如何测试它。
我需要一种方法来模拟 firebase 函数,同时能够测试该行是否被调用 yield call(getSnapShotFromUserAuth, user);
必须使用 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();
});
我正在尝试测试以下功能:
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
以及其他 saga 测试库,但似乎无法弄清楚如果没有使用 saga 效果调用 firebase 函数,如何测试它。
我需要一种方法来模拟 firebase 函数,同时能够测试该行是否被调用 yield call(getSnapShotFromUserAuth, user);
必须使用 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();
});