2017-01-19 45 views
1

可以說我有一個可以與Firebase身份驗證系統一起使用的登錄和註銷功能。單元測試依賴於使用Jest的http調用的代碼的最佳方式是什麼?

一個單元如何測試這種方法? 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)) 
     }) 
    } 
} 

我怎麼能嘲笑這樣的事情?我應該只是爲了測試方法而設置測試電子郵件和密碼嗎? 什麼是推薦的方式?

謝謝!

回答

2

用笑話你可以嘲笑這樣的功能。

jest.mock('pathToFireBase',() => ({ 
    signInWithEmailAndPassword(email,password){ 
    if(password === 'correct') { 
     return Promise.resolve({name: 'someUser'}) 
    } else { 
     return Promise.reject({error: 'someError'}) 
    } 
    } 
})) 

這將您firebaseAuth模塊的功能,要麼返回取決於你傳遞給函數在測試中的密碼解決或拒絕承諾在更換signInWithEmailAndPassword

請看docs如何處理測試中的承諾

相關問題