У меня есть компонент, который использует 'react-day-picker'
.jest instace(). Имитировать ('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);
});
Задача lem с этим является то, что .simulate() не распознает 'dayClick'
. Я получаю следующее сообщение об ошибке в консоли:
TypeError: ReactWrapper::simulate() event 'dayClick' does not exist
Если я пытаюсь моделировать 'click'
вместо этого, шпион возвращается false
(поэтому метод никогда не вызывается).
Что я делаю неправильно?
Correct , класс div - .DayPicker-Day для разрешенных div. Итак: sidebar.find ('DayPicker-Day'). First(). Simulate ('click'); решили проблему. Спасибо –