我有一个正在使用的组件'react-day-picker'
。
这个组件有一个方法叫做handleDayClick
:
handleDayClick(e, day, {disabled}) {
if (disabled) {
// Do not update the state if the day is disabled
return;
}
this.setState({ selectedDay: day });
this.props.dateClick(day);
};
然后将其作为 onDayClick 道具传递给:
<DayPicker
onDayClick={ this.handleDayClick.bind(this) }
selectedDays={ day => DateUtils.isSameDay(day, this.state.selectedDay) }
disabledDays={ isWeekend }
/>
现在我想编写一个模拟日期点击事件的测试,看看它是否触发了正确的方法:
it('DayPicker should call handleDayClick on click', () => {
const sidebar = mount(<Sidebar />);
let spy = sinon.spy(sidebar.instance(), 'handleDayClick');
sidebar.update();
sidebar.find(DayPicker).simulate('dayClick');
expect(spy.called).toBe(true);
});
问题在于.simulate()无法识别'dayClick'
. 我在控制台中收到以下错误:
TypeError:ReactWrapper::simulate() 事件“dayClick”不存在
如果我尝试模拟'click'
,则间谍返回false
(因此永远不会调用该方法)。
我究竟做错了什么?