Этот ответ отвечает всем требованиям. Лучший способ получить код для модульного тестирования, который зависит от http-вызовов с использованием Jest?
В соответствии с этим ответом это перезапишет signInWithEmailAndPassword
, позволяя вашему кодупройти без удара огненной базы.В приведенном ниже примере может потребоваться некоторая настройка.Не уверен в области действия dispatch
.
jest.mock('pathToFireBase', () => ({
signInWithEmailAndPassword(email, password) {
return Promise.resolve({name: 'someUser'})
}
}))
const dispatch = jest.fn();
firebase.auth().signInWithEmailAndPassword(username, password)
expect(dispatch.mock.calls.length).toBe(1);
Другой вариант (для Node.js) - использовать что-то вроде VCR .Опция сепия .Он построен LinkedIn, поэтому, вероятно, лучше поддерживается и проверяется.С помощью этого инструмента вы записываете свои запросы один раз, сохраняя ответы и воспроизводя их при вызове.Эта опция позволяет избежать насмешек, но поддерживает быстрые тесты uint с предопределенными ответами.Я не знаю, какой вариант веб-интерфейса, как этот.
Firebasemock выглядит как отличный вариант.Хотя я не вижу signInWithEmailAndPassword
.Аутентификация выполняется путем явной установки состояния. пример аутентификации .
mocksdk.auth().changeAuthState({
uid: 'testUid',
provider: 'custom',
token: 'authToken',
expires: Math.floor(new Date() / 1000) + 24 * 60 * 60,
auth: {
isAdmin: true
}
});
mocksdk.auth().flush();
console.assert(document.location.href === '#/admin', 'redirected to admin');