如何在测试中解决NativeModule.RNLocalize为空错误? [英] How to resolve a NativeModule.RNLocalize is null error in test?

查看:145
本文介绍了如何在测试中解决NativeModule.RNLocalize为空错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用软件包react-native-localize在应用程序中提供本地化.我已经链接了库,并且可以在设备上正常运行.

I'm using the package react-native-localize to provide localization in an app. I've already linked the library and it works fine running on a device.

问题:

当我测试导入 react-native-localize 的组件时.我收到错误react-native-localize: NativeModule.RNLocalize is null. 为了解决此空错误,我在测试文件的顶部调用了jest.mock('react-native-localize');.但是我仍然遇到指向NativeModule.RNLocalize is null的错误.我还提供了

When I test a component that imports react-native-localize. I get the error react-native-localize: NativeModule.RNLocalize is null. In order to resolve this null error I call jest.mock('react-native-localize'); at the top of the test file. But I still get an error pointing to NativeModule.RNLocalize is null. I've also provided the mock as mentioned in the package README to no avail.

import 'react-native';
import React from 'react';
import App from '../App';
// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';
import * as RNLocalize from 'react-native-localize';

 // mocking the module here with jest.mock
jest.mock('react-native-localize');

it('renders correctly', () => {
  renderer.create(<App />);
});

问题:

如何解决NativeModule.RNLocalize在测试中为空错误?

How can you resolve a NativeModule.RNLocalize is null error in test?

测试堆栈跟踪:

    FAIL  __tests__/App-test.js
  ● Test suite failed to run

    react-native-localize: NativeModule.RNLocalize is null. To fix this issue try these steps:
    • Run `react-native link react-native-localize` in the project root.
    • Rebuild and re-run the app.
    • If you are using CocoaPods on iOS, run `pod install` in the `ios` directory and then rebuild and re-run the app. You may also need to re-open Xcode to get the new pods.
    • Check that the library was linked correctly when you used the link command by running through the manual installation instructions in the README.
    * If you are getting this error while unit testing you need to mock the native module. Follow the guide in the README.
    If none of these fix the issue, please open an issue on the Github repository: https://github.com/react-native-community/react-native-localize 

      16 | 
      17 | import {NavigationContainer} from '@react-navigation/native';
    > 18 | import * as RNLocalize from 'react-native-localize';
         | ^
      19 | import {Icon} from 'native-base';
      20 | import {createStackNavigator} from '@react-navigation/stack';
      21 | const Stack = createStackNavigator();

      at Object.<anonymous> (node_modules/react-native-localize/lib/commonjs/module.js:17:9)
      at Object.<anonymous> (node_modules/react-native-localize/lib/commonjs/index.js:3:1)
      at Object.<anonymous> (src/modules/AppView.js:18:1)
      at Object.<anonymous> (src/modules/AppViewContainer.js:2:1)
      at Object.<anonymous> (App.js:23:1)
      at Object.<anonymous> (__tests__/App-test.js:7:1)

推荐答案

我在测试中通过将这些行添加到我的jest配置文件中解决了此问题

I fixed this issue in my tests by adding these lines in my jest configuration file

jest.mock("react-native-localize", () => {
  return {
    getLocales: jest.fn(),
    // you can add other functions mock here that you are using
  };
});

这篇关于如何在测试中解决NativeModule.RNLocalize为空错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆