我正在尝试使用Jest和React Native Modal DateTime Picker为React Native Testing Library编写单元测试。我已经传递了3种(我相信是)标准的RN道具:
accessible: true,
accessibilityLabel: testLabel,
testID: testLabel,
这是我的测试:
fireEvent(dobField, 'handleCalendarPress');
const calendarPicker = wrapper.getByTestId('BDD--ThirdPartyComp--DateTimePickerModal');
fireEvent(calendarPicker, 'onConfirm', ageOver18);
dobField
是我创建的自定义输入字段,当它被“按下”时,可以通过添加的testID
找到模态。但是,将事件触发到onConfirm
的第三个条件,我收到此错误:
Error: Uncaught [TypeError: this._picker.current.setNativeProps is not a function]
我已经阅读了有关“直接操作”的RN文档(link),其中涉及设置/使用native props
。但是,似乎应该在modal / lib本身上实现它,而不是从我这边实现?
所以我的问题是:
答案 0 :(得分:1)
我正在使用react-native-datepicker
并收到相同的this._picker.setNativeProps is not a function
错误。由于DatePickerIOS
使用react-native-datepicker
作为IOS日期选择器,因此我通过模拟DatePickerIOS
进行了修复。
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'});
}
};
});