考虑 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
?