考慮一個陣營組件的以下輸入元件:爲什麼在dispatchEvent上不調用React事件處理程序?
<input onChange={() => console.log('onChange')} ... />
雖然測試陣營組分,我模擬用戶改變輸入值:
input.value = newValue;
TestUtils.Simulate.change(input);
這導致'onChange'
被記錄,如預期。
然而,當'change'
事件直接發送(我使用jsdom):
input.value = newValue;
input.dispatchEvent(new Event('change'));
的onChange
處理程序不被調用。
爲什麼?
我使用dispatchEvent
而不是TestUtils.Simulate
的動機是因爲TestUtils.Simulate
不支持事件冒泡,而且我的組件的行爲依賴於此。我想知道是否有方法來測試沒有TestUtils.Simulate
事件?
謝謝,這個工作爲了我! – belek
你是我的救星! – shlensky