使用 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

谢谢!

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

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 };
});

最新更新