假设我有一个与 Firebase 身份验证系统配合使用的登录和注销功能。
一个单元如何测试这种方法? Firebase 应用实例被导入并在登录功能中使用。
代码片段(如果需要):
export function login(data) {
return dispatch => {
return firebaseAuth.signInWithEmailAndPassword(data.emailField, data.passField)
.then(user => {
dispatch({type: "SET_CURRENT_USER", payload: user})
user.getToken().then(token => setAuthToken(token))
localStorage.setItem("currentUser", JSON.stringify(user))
})
}
}
我怎样才能 mock 这样的事情?我是否应该仅出于测试该方法的目的而设置测试电子邮件和密码? 推荐的方法是什么?
谢谢!
最佳答案
使用 jest,您可以像这样模拟该函数。
jest.mock('pathToFireBase', () => ({
signInWithEmailAndPassword(email,password){
if(password === 'correct') {
return Promise.resolve({name: 'someUser'})
} else {
return Promise.reject({error: 'someError'})
}
}
}))
这会将 firebaseAuth
模块中的 signInWithEmailAndPassword
替换为一个函数,该函数根据您在测试中传递给函数的密码返回已解决或拒绝的 Promise。
请查看docs关于如何在测试中处理 promise
关于javascript - 使用 Jest 对依赖于 http 调用的代码进行单元测试的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41732058/