2016-05-17 10 views
1

Для тестирования Im с использованием JSDom, мокко, chai и ReactTestUtils.реакция testUtils имитировать клик на переключателе, не запускающий onchange

Один из моих компонентов получил три переключателя, что при обнаружении изменения (onChange) будет выполняться функция.

Все работает в ручном тестировании, но я не могу вызвать функцию, когда я использую simulate.Click.

 var FrequencyFormInstance = ReactTestUtils.findRenderedComponentWithType(rootElement, FrequencyForm); 
     var frequencyNode = ReactDom.findDOMNode(FrequencyFormInstance); 

     var oneOfTheRadioButton = frequencyNode.children[1].children[2]; 

     ReactTestUtils.Simulate.click(oneOfTheRadioButton); 

то некоторые утверждают, покажите мне, что функция внутри компонента никогда не бежал, поэтому он никогда не обнаруживается изменение (замковое на кнопку радио).

любая подсказка о том, почему?

+0

Вы решили проблему? –

+0

Из чего я rmb я изменил 'simulate.click' на' simulate.change', и он сработал. Вы столкнулись с одной и той же проблемой? – user308553

+0

Да, но в противном случае я изменил onChage обработчик на onClick и использовал метод Simulate.click. Насколько я понимаю, это соответствует React docs. –

ответ

0

Это то, что обсуждается здесь: https://github.com/facebook/jest/issues/242

По сути вы должны использовать изменения, поскольку он является входным сигналом, но и передать в дополнительных данных.

var FrequencyFormInstance = ReactTestUtils.findRenderedComponentWithType(rootElement, FrequencyForm); 
var frequencyNode = ReactDom.findDOMNode(FrequencyFormInstance); 

var oneOfTheRadioButton = frequencyNode.children[1].children[2]; 

ReactTestUtils.Simulate.change(checkbox.getDOMNode(), {"target": {"checked": true}});