我正在编写的组件需要根据是否ctrl按下来改变其行为。
我使用了一个window.onkeydown
事件,但Simulate
来自React Test Utils的事件不允许我针对window
. 我也尝试过window.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 17 }));
,但 mocha/node 无法识别KeyboardEvent
.
有没有办法window.onkeydown
使用React Test Utils进行测试?如果没有,有没有更好的方法在 mocha for node 中做到这一点?
这是一些说明问题的代码:
describe('On Keydown', () => {
it('fires the event', () => {
// Component
const Component = class extends React.Component {
constructor(props) {
super(props);
this.state = { key: false };
window.addEventListener('keydown', e => this.setState({ key: true }));
window.addEventListener('keyup', e => this.setState({ key: false }));
}
render() {
return <span>test</span>
};
};
// Rendering
const rendered = renderIntoDocument(<Component/>);
// Firing event
expect(rendered.state.key).to.equal(false);
// Error here
Simulate.keyDown(window, { keyCode: 17 });
expect(rendered.state.key).to.equal(true);
});
});