如何正确模拟react-native-firebase v6

问题描述

我在react-native-firebase仓库中打开了一个问题,但是也许有人可以在这里回答我的问题。

嘿,我正在将代码库中的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对象,但这似乎不起作用,是否有建议的方法可以模拟该软件包?还是我做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...