尝试测试父组件是否只包含子组件。一切都很好,除非属性包含THIS var,例如下面代码中的name
:
Parent.js
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
}
handleChange(e){
...
}
<Parent>
<Child onChange={this.handleChange} />
</Parent>
父-test.js
...
container = shallow(<Parent />)
expect(container.contains(<Child onChange={this.handleChange} />)).toBe(true);
...
这将产生以下错误消息,表明未定义:
TypeError:无法读取属性&#39; name&#39;未定义的
我的目标是进行一项测试,显示子组件是否存在具有适当属性的项目。我不想测试组件本身。
[编辑以澄清示例]
答案 0 :(得分:1)
this
未在您正在运行的测试的上下文中定义。例如,如果您在创建prop
时将其作为Parent
传递,则可以在测试中专门检查该值。
此外,您的Parent
组件正在将Child
的名称初始化为 this.name ,而不是使用变量。如果要在变量中指定值,则应该执行name={this.name}
之类的操作。
您应该考虑使用props
代替this.name
。