由于未找到节点,因此无法在Enzyme中模拟按下

时间:2017-11-28 16:06:48

标签: javascript react-native enzyme

我有一个名为MyClass的React Native类,使用此render方法:

render() {
    return (
        <TouchableHighlight onPress={this.showAllData}>
            //some other code
        </TouchableHighlight>
    );
}

我正试图用这样的酶测试它:

    const wrapper = shallow(
        <MyClass/>
    );
    wrapper.find(<TouchableHighlight/>).simulate('press');
    expect(wrapper.find(<Text> {Constants.MY_CONSTANT} </Text>)).to.have.length(0);

但是,我收到此错误:

Method “simulate” is only meant to be run on a single node. 0 found instead.

那么为什么找不到<TouchableHighlight/>

如何让<TouchableHighlight/>对测试可见?

1 个答案:

答案 0 :(得分:4)

而不是:

wrapper.find(<TouchableHighlight/>).simulate('press');

尝试:

wrapper.find(TouchableHighlight).simulate('press');

如果不起作用,也请尝试:

wrapper.find('TouchableHighlight').simulate('press');

第一个更改应该有效,但在某些情况下(特别是如果这是一个简化的示例),它会有点混乱,你会想要用字符串名称而不是类来查找它。