Модульное тестирование обработчика onClick с использованием Jest in React - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть следующий код, который устанавливает пользовательский обработчик для каждого элемента (который может быть button или li) щелчком мыши.

componentWillReceiveProps(nextProps) {
   this._setCallbackToItemLinks(nextProps);
}

_setCallbackToItemLinks(props) {
    const items = props && props.items;
    items.forEach(item => {
      item.links.forEach(link => {
        this._setCallbackToLink(link);
      });
    });
 }



 _setCallbackToLink(link) {
    link.onClickFromProps = link.onClick;
    link.onClick = e => this._onItemClick(e, link.onClickFromProps);
 }



onItemClick(e, onClickFromProps) {
    console.log("Custom click event handler called");
    if (onClickFromProps) 
      onClickFromProps(e);
}

Я хочу провести модульное тестирование вышеуказанной функциональности, используяШутка.

const component= mount(<Comp />);
const mock2 = jest.fn();
component.setProps({ items: [{links: [{ name: 'Test', key: 'Test', url: 'Test', onClick: mock2 }]}] });
const link= component.find('.nav-link');
navLink.simulate('click');
expect(mock2.mock.calls.length).toBe(1);

тест проходит успешно, однако я не получаю оператор console.log, написанный в методе onItemClick.Когда я пытаюсь отладить этот тест, он даже не входит в onItemClick после вызова симуляции.

navLink показывает тег <a>.

когда я регистрируюсь navLink.props().onClick, это показывает [Function: bound]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...