Проверьте вход в Facebook с Jest - PullRequest
0 голосов
/ 16 марта 2020

У меня есть приложение, которое поддерживает вход через 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() называется?

Любая помощь будет принята с благодарностью!

...