Как издеваться / заглушки реагировать-родной-firebase?
Кто-нибудь знает, почему это не сработает?
Мой вызов API:
import firebase from 'react-native-firebase';
export default function getAuth() {
return new Promise((resolve) => {
firebase.auth().onAuthStateChanged((user) => {
resolve(user);
});
});
}
Мой модульный тест, который не прошел, "ожидал вызова одного утверждения, но получил вызовы нулевого подтверждения".
import firebase from 'react-native-firebase';
import getAuth from '../'; // eslint-disable-line
jest.mock('react-native-firebase', () => {
return {
auth: () => {
return {
onAuthStateChanged: () => {
return Promise.resolve({
name: 'Shaun',
});
},
};
},
};
});
it('resolves a promise containing the user', async () => {
expect.assertions(1);
const response = await getAuth();
expect(response).toEqual({ name: 'Shaun' });
});
1 ответ
- Вы вернули решенное обещание => после этого ничего не будет вызвано.
- Ваш
onAuthStateChanged
это функция с обратным вызовом
Вместо этого замените навесное оборудование onAuthStateChanged
этим:
onAuthStateChanged: jest.fn(cb => cb({ name: 'Shaun' }));