Как издеваться / заглушки реагировать-родной-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' }));

Другие вопросы по тегам