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