酶:如何测试一个键?

时间:2018-05-25 15:17:12

标签: reactjs enzyme

我有一个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});

似乎应用程序没有对逃避点击做出反应。

1 个答案:

答案 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});

这可能有帮助。