2016-05-17 47 views
1

用於測試使用JSDom,mocha,chai和ReactTestUtils的Im。react 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

從我改變'simulate.click'到'simulate.change',它工作。你有沒有遇到同樣的問題? – user308553

+0

是的,但我改變onChage處理程序到onClick並使用Simulate.click方法。據我所知它對應於React文檔。 –

回答

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}});