reactjs - 如何在 saga 中测试 firebase 功能?
问题描述
我正在尝试测试以下功能:
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();
});
推荐阅读
- javascript - 未捕获的 SyntaxError:模板字符串中的意外标识符
- c# - Zip 下载和解压异常
- react-native - 在 Text 组件内垂直对齐 Pressable
- arrays - Swift:是否有一种“优雅”的方式来过滤字典值(它是一个数组)?
- flutter - 银子懒惰滚动
- typescript - Nestjs 异常处理
- swift - Swift 在尝试获取价值时得到 Nil
- api - 如何转换为 PHP 控制台 CURL
- python - 在 Python 中使用 for 循环时如何更改列表中的值?(不使用索引)
- javascript - 无法使用变量 - 我想我只是再次分配变量?