Javascript 使用酶,如何在成分中找到子成分

Javascript 使用酶,如何在成分中找到子成分,javascript,reactjs,react-native,enzyme,Javascript,Reactjs,React Native,Enzyme,我是新的反应天然和酶,我试图创建一个自定义组件在这里。 我将显示一个基于this.props.hasIcon的图像。我将hasIcon的默认道具值设置为true。当我检查时,图像存在于Wrapper中。我得到false tlProgress.js class TLProgress extends Component { render() { return ( <View style={styles.container}> {this.rende

我是新的反应天然和酶,我试图创建一个自定义组件在这里。 我将显示一个基于
this.props.hasIcon
的图像。我将
hasIcon
的默认道具值设置为
true
。当我检查
时,图像
存在于Wrapper中。我得到
false

tlProgress.js

class TLProgress extends Component {
  render() {
    return (
      <View style={styles.container}>
        {this.renderImage}
        {this.renderProgress}
      </View>
    );
  }
}

TLProgress.defaultProps = {
  icon: require("./../../img/logo.png"),
  indeterminate: true,
  progressColor: Colors.TLColorAccent,
  hasIcon: true,
  progressType: "bar"
};
describe("tlProgress rendering ", () => {
    let wrapper;
    beforeAll(() => {
        props = { indeterminate: false };
        wrapper = shallow(<TLProgress {...props} />);
    });

    it("check progress has app icon", () => {
        expect(wrapper.find("Image").exists()).toBe(true); // fails here..
    });
});
现在,如果我检查酶中是否存在
图像
,我将得到false

tlProgress.test.js

class TLProgress extends Component {
  render() {
    return (
      <View style={styles.container}>
        {this.renderImage}
        {this.renderProgress}
      </View>
    );
  }
}

TLProgress.defaultProps = {
  icon: require("./../../img/logo.png"),
  indeterminate: true,
  progressColor: Colors.TLColorAccent,
  hasIcon: true,
  progressType: "bar"
};
describe("tlProgress rendering ", () => {
    let wrapper;
    beforeAll(() => {
        props = { indeterminate: false };
        wrapper = shallow(<TLProgress {...props} />);
    });

    it("check progress has app icon", () => {
        expect(wrapper.find("Image").exists()).toBe(true); // fails here..
    });
});
description(“tlProgress rendering”,()=>{
让包装纸;
以前(()=>{
props={不确定:false};
包装器=浅();
});
它(“检查进度是否有应用程序图标”,()=>{
expect(wrapper.find(“Image”).exists()).toBe(true);//此处失败。。
});
});

您正在搜索名为“图像”的标记,而不是查找组件图像

应该是:

import Image from '../Image';
wrapper.find(Image) //do your assert here

您没有在render()中调用renderImage函数——您忘记了括号,因此它被解释为未定义的变量

应该是:(我假设您想调用renderProgress(),而不是renderProgress)

类TLProgress扩展组件{
render(){
返回(
{this.renderImage()}
{this.renderProgress()}
);
}

expect(wrapper.find(Image.exists()).toBe(true)
给了我
false
。它失败了。@user2906641尝试用mountya替换shall。我首先尝试了,我得到了错误
Enzyme的mount要求加载DOM环境,但没有发现任何环境。
。然后我使用shall。@user2906641您可以记录find语句吗?我不确定是否存在适用于ComponentyPeerror:C在tryCallOne的new promise(node_modules/promise/lib/core.js:66:3)中,在doResolve(node_modules/promise/lib/core.js:45:5)的tryCallTwo(node_modules/promise/lib/core.js:45:5)中,无法读取未定义的at对象的属性“find”。(app/components/res/u-test\uuuu-promise\t\uuuuu/tlpromise/tlpromise/tlpro(node_modules/promise/lib/core.js:37:12)位于node_modules/promise/lib/core.js:123:15