我如何在React Native中用酶测试openDrawer?

问题描述 投票:0回答:1

我在反应原生中的测试遇到了一些麻烦。我正在使用酶,我试图点击打开抽屉的按钮。我也在使用反应导航,但是当我尝试这个问题时:

TypeError:navigation.openDrawer不是函数

  const props = {
    navigation: {
      openDrawer: jest.fn(),
    },
  };

  const wrapper = shallow(<HeaderButton {...props} />);

  it('DrawerMenu is Called', () => {
    expect(
      wrapper
        .find('AnimatedComponent')
        .props()
        .onPress(),
    ).toHaveBeenCalled();
  });

const HeaderButton = (navigation: NavigationParams) => (
  <TouchableRipple
    onPress={() => navigation.openDrawer()}
  >
    <Icon
      name="menu"
      size={Platform.OS === 'ios' ? 20 : 24}
      color="white"
      style={{ marginHorizontal: 16 }}
    />
  </TouchableRipple>
);

[链接到代码:https://gist.github.com/salomaoluiz/dd710b3506b95b3f0f13410a02ef41cf]

谢谢。

react-native jestjs react-navigation enzyme
1个回答
0
投票

问题是HeaderButton应该采取props(其中有navigation作为财产),而不是navigation直接。

这应该工作:const HeaderButton = ({ navigation }) => (

或者,如果您愿意:

const HeaderButton = (props) => (
  <TouchableRipple
    onPress={props.navigation.openDrawer}
  >
© www.soinside.com 2019 - 2024. All rights reserved.