我有一个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});
似乎应用程序没有对逃避点击做出反应。
答案 0 :(得分:0)
您遇到此错误“模拟”方法仅应在单个节点上运行。而是找到0。表示找不到该容器。
您应首先检查此内容,以确保获得节点:
const container = wrapper.find(".class_name");
expect(container.length).to.equal(1);
或者这可能是异步加载的,这就是为什么您没有获取节点。然后,您应该尝试使用 setTimeout 函数来获取节点。
内部setTimeout函数调用此:
container.simulate('keydown', {key: 'Escape', keyCode: 27, which: 27});
这可能有帮助。