Я пытаюсь смоделировать / протестировать событие нажатия клавиши, которое вызывает props.onClick
. Я успешно смоделировал onClick
с помощью аналогичного кода тестирования, но нажатие клавиши не работает.
Когда я тестировал его вручную, нажимая клавишу Enter, он работает как надо, но когда я пытаюсь написать для него тесты, он продолжает давать сбой, и я не уверен, почему. Я поместил регистратор в функцию useEffect
, и он вызывается во время теста, но он дает сбой и выдает ошибку, что onClickFnc
никогда не вызывался.
В моем компоненте функции кнопки я связываю прослушиватель событий:
button. js
useEffect(() => {
if (enterEnable) {
window.addEventListener('keydown', onEnterPress);
return () => window.removeEventListener('keydown', onEnterPress);
}
});
const onEnterPress = e => {
if (e.which == 13) {
onClickSync(e);
}
};
const onClickSync = e => {
props.onClick(e);
};
button.test . js
it('check ButtonLoader enable enter to work', () => {
const onClickFnc = jest.fn();
const wrapper = shallow(<ButtonLoader {...props} enterEnable={true} onClick={onClickFnc}/>);
wrapper.find('button').simulate('keypress', {key: 'Enter'})
expect(onClickFnc).toBeCalled();
});
Ошибка:
expect(jest.fn()).toBeCalled()
Expected number of calls: >= 1
Received number of calls: 0
Как мне успешно это проверить?