У меня возникла проблема с использованием метода Enzyme's contains, когда дело доходит до обработчика onClick на кнопке, где предоставленный метод действия требует аргумента. Я столкнулся с этим, передавая действия redux компоненту, но здесь я буду использовать упрощенные примеры.Кнопка проверки неполадок onClick handler with Enzyme
Скажем, у вас есть два метода:
const logClick =() => console.log('button was clicked');
const logClickWithArg = (message) => console.log('button was clicked: ', message);
Вы передаете их к компоненту, и в этом компоненте у вас есть две кнопки:
<button
onClick={logClick}
>
Click
</button>
<button
onClick={() => logClickWithArg('hello')}
>
Click With Arg
</button>
Когда я тестирую первую кнопку, нет никаких проблем :
expect(wrapper.contains(
<button
onClick={logClick}
>
Click
</button>)).toBe(true);
проходит. Тем не менее, второй:
expect(wrapper.contains(
<button
onClick={() => logClickWithArg('hello')}
>
Click
</button>)).toBe(true);
терпит неудачу с бесполезным выходом:
expect(received).toBe(expected)
Expected value to be (using ===):
true
Received:
false
at Object.<anonymous>.it (src/App.test.js:42:3)
at process._tickCallback (internal/process/next_tick.js:103:7)
Я пытался узнать больше, пробуя все виды сравнений, как:
console.log('first ', wrapper.find('button').first().props().onClick);
console.log('last ', wrapper.find('button').last().props().onClick);
expect(wrapper.find('button').first().props().onClick).toEqual(logClick);
expect(wrapper.find('button').last().props().onClick).toEqual(logClickWithArg);
который результаты:
console.log src/App.test.js:29
first () => console.log('button was clicked')
console.log src/App.test.js:30
last () => logClickWithArg('hello')
expect(received).toEqual(expected)
Expected value to equal:
[Function logClickWithArg]
Received:
[Function onClick]
Я - в Jest, как тест-бегун, и столкнулся с этим как в настройке create-react-app, так и в реакции-шаблоны. Любая идея, что я делаю неправильно?
EDIT
Я дам свой собственный обходной путь в ответ ниже. Вместо этих примеров я буду использовать свой фактический код. Тем не менее, мне все еще интересно, почему тест здесь терпит неудачу ....
Этот вопрос не может решить вашу проблему? Http: // StackOverflow.com/questions/35478076/testing-react-component-onclick-event-with-multiple-actions-in-it –