Как я могу проверить openDrawer с ферментом в React Native? - PullRequest
0 голосов
/ 27 апреля 2019

У меня возникли некоторые проблемы с моими тестами в реагировать на родной.Я использую фермент и пытаюсь нажать на кнопку, которая открывает ящик.Я также использую реагирующую навигацию, однако, при попытке решить эту проблему:

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]

Спасибо.

1 Ответ

0 голосов
/ 28 апреля 2019

Проблема в том, что HeaderButton должен принимать props (который имеет navigation в качестве свойства), а не navigation напрямую.

Это должно работать: const HeaderButton = ({ navigation }) => (

Или, если вы предпочитаете:

const HeaderButton = (props) => (
  <TouchableRipple
    onPress={props.navigation.openDrawer}
  >
...