【问题标题】:Test firebase cloud messaging with Jest使用 Jest 测试 Firebase 云消息传递
【发布时间】:2018-10-16 14:37:20
【问题描述】:

我正在尝试用 jest 测试 firebase 云消息传递,但我的模拟函数出现错误...

如何测试所有函数调用?

expect(jest.fn()).toHaveBeenCalled()
Expected mock function to have been called.

import { Sentry, SentrySeverity } from 'react-native-sentry';
import RNFirebase from 'react-native-firebase';
import Veery from 'react-native-veery';

export default function firebaseCloudMessaging() {
  try {
    const firebase = RNFirebase.app().messaging();

    firebase.getToken().then(Veery.setVeeryToken);

    firebase.getInitialNotification();

    firebase.onMessage(Veery.VeeryNotificationHandler);

    firebase.onTokenRefresh(Veery.setVeeryToken);
  } catch (error) {
    Sentry.captureException(error, { level: SentrySeverity.Error });
    console.warn('Error with firebaseCloudMessaging ', error);
  }
}

我的测试: https://gist.github.com/ludwigCDSBDX/82749eb20eac44fffac8d5318864eb6f

谢谢!

【问题讨论】:

    标签: javascript reactjs firebase react-native jestjs


    【解决方案1】:

    我的错误: 上一个模拟创建了几个模拟实例 所以当我试图检查我的模拟是否被调用时,我比较的是同一个函数,但不是同一个函数实例!

    jest.mock('react-native-firebase', () => {
      const app = { messaging: () => messaging };
    
      const messaging = {
        getToken: jest.fn(() => Promise.resolve('myTokenMock')),
        getInitialNotification: jest.fn(),
        onMessage: jest.fn(),
        onTokenRefresh: jest.fn(() => Promise.resolve('myMockTokenRefresh')),
      };
    
    return { app: () => app };
    });
    

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多