开玩笑测试失败,未定义警报

时间:2020-01-21 09:10:43

标签: reactjs unit-testing react-native jestjs enzyme

我对我的react native项目使用jest,我想测试具有“ onPress”的组件。单击它时,会出现警报。

<ListItem
      testID={'Contact'}
      onPress={() => alert('hello')}
/>

并进行测试;

it('test onPress functionality', () => {
    window.alert = jest.fn();
    const wrapper = shallow(
      <Contact
        onPress={window.alert}
      />,
    );
    wrapper
      .findWhere(node => node.prop('testID') === 'Contact')
      .props()
      .onPress();
    expect(window.alert).toHaveBeenCalledWith('hello');
  });

但是此测试会给出警报错误。

ReferenceError:警报未定义onPress = {()=> alert('hello')}

请帮助我解决此错误。

2 个答案:

答案 0 :(得分:1)

.use react native Alert

import {Alert} from 'react-native';

<ListItem
      testID={'Contact'}
      onPress={() => Alert.alert('hello')}
/>

查看文档here

答案 1 :(得分:0)

您的测试不正确,因为您正在测试将'onPress'作为参数。

expect(window.alert).toHaveBeenCalledWith('hello');

上面的方法应该起作用。