传递this.var的子组件的jest测试失败,因为这是未定义的

时间:2017-09-07 21:18:22

标签: reactjs jestjs

尝试测试父组件是否只包含子组件。一切都很好,除非属性包含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;未定义的

我的目标是进行一项测试,显示子组件是否存在具有适当属性的项目。我不想测试组件本身。

[编辑以澄清示例]

1 个答案:

答案 0 :(得分:1)

this未在您正在运行的测试的上下文中定义。例如,如果您在创建prop时将其作为Parent传递,则可以在测试中专门检查该值。

此外,您的Parent组件正在将Child的名称初始化为 this.name ,而不是使用变量。如果要在变量中指定值,则应该执行name={this.name}之类的操作。

您应该考虑使用props代替this.name