如何模拟本机I18nManager

时间:2018-06-22 09:16:40

标签: react-native mocking jestjs react-native-router-flux

我正在尝试在本机反应中开玩笑。我正在使用react-native-router-flux进行导航。我的测试用例因此错误而失败

Test suite failed to run

    TypeError: Cannot read property 'isRTL' of undefined

      at Object.<anonymous> (node_modules/react-native-router-flux/dist/NavBar.js:286:44)
      at Object.<anonymous> (node_modules/react-native-router-flux/dist/navigationStore.js:7:13)
      at Object.<anonymous> (node_modules/react-native-router-flux/dist/Reducer.js:74:36)

确切的行是transform:[{scaleX:_reactNative.I18nManager.isRTL?-1:1}]})

我尝试了其他方式进行模拟,但无法获得它

一种方法是

import {I18nManager} from 'react-native'

I18nManager = {
    isRTL : false
}

我将此代码段放入了有趣的初始配置文件中,但出现类似I18nManager is readonly的错误

1 个答案:

答案 0 :(得分:0)

实际上,我使用的是正在运行的显式模块工厂,而不是使用Jest的react-native-mock-render自动模拟功能。

喜欢

jest.mock('react-native', () => require('react-native-mock-render'), {
  virtual: true
})

当我浏览此lib代码时,在模拟中找不到I18nManager。因此,我分叉了该存储库,并自己添加了I18nManager文件。