我有一个名为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/>对测试可见?

最佳答案

代替:

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


尝试:

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


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

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


第一次更改应该起作用,但是在某些情况下(特别是如果这是一个简化的示例),它会有些混乱,您将希望使用字符串名称而不是类来查找它。

09-25 17:01