У меня есть приложение, которое поддерживает вход через Facebook. Я создал класс FacebookConnector
, где у меня есть метод login()
. В этом методе я пытаюсь получить токен доступа. Если я получаю токен, я отправляю данные в Firebase через вызов функции sendDataToFirebase()
.
Это мой login()
метод:
static login = async () => {
try {
const result = await LoginManager.logInWithPermissions([
'public_profile',
'email',
]);
if (result.isCancelled) {
//do nothing, the user cancelled
} else {
const data = await AccessToken.getCurrentAccessToken();
if (!data) {
//show an alert
} else {
this.sendDataToFirebase(data, result.grantedPermissions.toString());
}
}
} catch (error) {
console.log(error)
}
};
Я хочу проверить, действительно ли sendDataToFirebase()
вызывается при получении токена. Это мой тест:
it('Calls the function to send data to Firebase when the token IS retrieved', async () => {
jest.mock('./FacebookConnector');
jest.mock('react-native-fbsdk', () => ({
LoginManager: {
logInWithPermissions: jest.fn().mockReturnValue('result'),
},
AccessToken: {
getCurrentAccessToken: jest.fn().mockReturnValue(false),
}
}));
const sendFirebaseMock = jest.spyOn(FacebookConnector, 'sendDataToFirebase');
await FacebookConnector.login();
expect(sendFirebaseMock).toHaveBeenCalledTimes(1);
});
Тест не пройден с сообщением TypeError: Cannot read property 'logInWithPermissions' of undefined
- он запускается в скобке catch()
из метода login()
. Итак, мои проблемы:
Как я могу надежно проверить, что sendDataToFirebase()
называется?
Любая помощь будет принята с благодарностью!