3

我正在尝试使用 Jest 和React Native Testing Library为React Native Modal DateTime Picker编写单元测试。我已经通过了 3 个(我相信是)标准 RN 道具:

accessible: true,
accessibilityLabel: testLabel,
testID: testLabel,

这是我的测试:

fireEvent(dobField, 'handleCalendarPress');
const calendarPicker = wrapper.getByTestId('BDD--ThirdPartyComp--DateTimePickerModal');
fireEvent(calendarPicker, 'onConfirm', ageOver18);

dobField是我创建的自定义输入字段,当它被“按下”时,我可以找到testID我添加的模式。但是,将事件触发到的第 3 个条件onConfirm,我收到此错误:

Error: Uncaught [TypeError: this._picker.current.setNativeProps is not a function]

我已经阅读了关于“直接操作”的 RN 文档(链接),其中讨论了设置/使用native props. 但是,这似乎应该在 modal/lib 本身上实现,而不是从我这边?

所以我的问题是:

  1. 有没有人有为此第三方组件编写测试的经验?
  2. 有没有人可以分享更多关于 TypeError 含义的信息?
  3. 有没有更好的方法来为此模式编写单元测试?
  4. 我是否缺少能够通过 Jest 与组件正确交互的道具/部件?
4

1 回答 1

1

我正在使用react-native-datepicker并得到同样的this._picker.setNativeProps is not a function错误。我用 mocking 修复了它DatePickerIOS,因为react-native-datepickerDatePickerIOS用于 IOS 日期选择器。

jest.mock('react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js', () => {
  const React = require('React');
  return class MockPicker extends React.Component {
  render() {
    return React.createElement('DatePicker', {date: '21.07.2020'});
  }
 };
});
于 2020-07-21T06:57:09.473 回答