我有一个React应用程序,它对Escape的按键做出反应。这是应用程序中的代码:
componentDidMount(){
document.addEventListener("keydown", this.escFunction.bind(this), false);
}
在测试代码中,我写了以下语句:
wrapper.find('document').simulate('keyDown', {keyCode: 27});
我收到一个错误:
Method “simulate” is only meant to be run on a single node. 0 found instead.
我也尝试过:
wrapper.simulate('keyDown', {keyCode: 27});
似乎应用程序没有对逃避点击做出反应。
您收到此错误方法“simulate”仅用于在单个节点上运行。 0找到了。表示找不到容器。
您应首先检查以确保您获得节点:
const container = wrapper.find(".class_name");
expect(container.length).to.equal(1);
或者这可能是异步加载,这就是为什么,你没有得到节点。然后你应该尝试使用setTimeout函数来获取节点。
在setTimeout函数里面调用:
container.simulate('keydown', {key: 'Escape', keyCode: 27, which: 27});
可能这有帮助。