2017-01-19 17 views
1

Допустим, у меня есть функция входа в систему и выхода из системы, которая работает с системой проверки firebase.Лучший способ модульного тестового кода, который зависит от http-звонков с помощью Jest?

Как бы один блок тестировал такой метод? Экземпляр приложения 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'}) 
    } 
    } 
})) 

это заменит signInWithEmailAndPassword в вашем firebaseAuth модуля с функцией, либо вернуть разрешенную или отвергнут обещание в зависимости от пароля вы передаете функции в тесте.

Пожалуйста, взгляните на docs о том, как обрабатывать обещания в тестах