私は'react-day-picker'
を使用しているコンポーネントを持っています。jest instace()。simulate( 'dayClick'); TypeErrorが存在しません
このコンポーネントは、メソッドは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);
});
probこれは、.simulate()が'dayClick'
を認識しないということです。私は、コンソールで次のエラーを取得する:私は代わりに'click'
をシミュレートしようとした場合
TypeError: ReactWrapper::simulate() event 'dayClick' does not exist
、スパイはfalse
を返します(そのメソッドが呼び出されることはありません)。
私は間違っていますか?
内
<div>
にテストをシミュレートすることになりますクリックハンドラhttps://github.com/gpbl/react-day-picker/blob/master/src/Day.js
を取得し、DOMノードを含むコンポーネントでありますdivクラスは有効なdivの.DayPicker-Dayです。したがって:sidebar.find( '。DayPicker-Day')。first()。simulate( 'click');問題を解決しました。 ありがとう –