酶:如何测试一个键?

问题描述 投票:1回答:1

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

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

reactjs enzyme
1个回答
0
投票

您收到此错误方法“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});

可能这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.