使用Jest依赖于http调用的单元测试代码的最佳方法?

时间:2017-01-19 00:58:21

标签: javascript unit-testing mocking mocha jestjs

假设我有一个登录和注销功能,可以使用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))
      })
  }
}

我怎么能模仿这样的东西?我是否应该仅仅为了测试方法而设置测试电子邮件和密码? 什么是推荐的方式?

谢谢!

1 个答案:

答案 0 :(得分:4)

使用jest,你可以像这样模拟这个函数。

results

这将替换#2模块中的jest.mock('pathToFireBase', () => ({ signInWithEmailAndPassword(email,password){ if(password === 'correct') { return Promise.resolve({name: 'someUser'}) } else { return Promise.reject({error: 'someError'}) } } })) ,其功能是根据您在测试中传递给函数的密码返回已解决或拒绝的承诺。

请查看有关如何处理测试中的承诺的docs