考虑一个React组件中的以下输入元素:
<input onChange={() => console.log('onChange')} ... />
在测试React组件时,我模拟用户更改输入值:
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
的情况下测试事件?