javascript - 如何正确模拟 react-native-firebase v6
问题描述
我在react-native-firebase repo上打开了一个问题,但也许有人可以在这里更快地回答我的问题。
嘿,我正在我们的代码库中将 firebase v5 更新为 firebase v6,主要集成已完成,现在我正试图让我们的测试套件通过,我已经设法通过以下方式模拟 firebases 模块:
jest.mock('@react-native-firebase/messaging', () => {
return () => ({
hasPermission: jest.fn(() => Promise.resolve(true)),
subscribeToTopic: jest.fn(),
unsubscribeFromTopic: jest.fn(),
requestPermission: jest.fn(() => Promise.resolve(true)),
getToken: jest.fn(() => Promise.resolve('myMockToken')),
onMessage: jest.fn(),
onNotificationOpenedApp: jest.fn(),
getInitialNotification: jest.fn(() => Promise.resolve(false))
})
})
jest.mock('@react-native-firebase/crashlytics', () => ({}))
jest.mock('@react-native-firebase/app', () => {
return () => ({
onNotification: jest.fn(),
onNotificationDisplayed: jest.fn()
})
})
jest.mock('react-native/Libraries/EventEmitter/NativeEventEmitter')
// jest.mock('@react-native-firebase/app/lib/internal/RNFBNativeEventEmitter')
你可以看到我不得不模拟 RN NativeEventEmitter,我不确定它是否是最好的选择,无论如何,它可以让我们几乎所有的测试套件都变成绿色,但是有一个测试失败了:
$ jest --forceExit src/Sagas/InAppServicesSaga.test.js
FAIL src/Sagas/InAppServicesSaga.test.js
● Test suite failed to run
TypeError: Super expression must either be null or a function
at _inherits (node_modules/@babel/runtime/helpers/inherits.js:5:11)
at node_modules/@react-native-firebase/app/lib/internal/RNFBNativeEventEmitter.js:29:26
at Object.<anonymous> (node_modules/@react-native-firebase/app/lib/internal/RNFBNativeEventEmitter.js:71:2)
at Object.<anonymous> (node_modules/@react-native-firebase/app/lib/internal/registry/nativeModule.js:21:1)
我也尝试过模拟 RNFBNativeEventEmitter 对象,但这似乎不起作用,有推荐的方法来模拟包吗?或者我可能做错了什么?
解决方案
推荐阅读
- c++ - OpenGL视频帧拟合
- html - 如何增加图像轮播的不透明度?
- bash - 从具有 700 万行的输入文本文件中获取包含空格的最后一列的 md5 哈希
- operating-system - 主引导记录显示没有活动分区?
- php - ACF:创建自定义字段类型存储两个值
- java - 无限循环混乱中的Java拆分方法
- markdown - 分数转换为 sup 和 sub 元素
- amazon-web-services - ping 重定向端点后面的端点
- java - 从 double 到 float 的 Narrowing 转换的管理规则是什么?
- facebook-opengraph - Whatsapp 使用什么用户代理来抓取网站?