Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在react中测试子组件_Reactjs_Enzyme_Jestjs - Fatal编程技术网

Reactjs 如何在react中测试子组件

Reactjs 如何在react中测试子组件,reactjs,enzyme,jestjs,Reactjs,Enzyme,Jestjs,我正在尝试测试一个包含子组件的react组件。子级有一个输入框,它将使用onChange更新其状态,然后onSubmit将向父级回调更新父级状态的文本。组件如下所示: class App extends Component { constructor(props) { super(props) this.state = {answer: ''}; } answerHandler(_answer) { this.setState({ answer: _answer })

我正在尝试测试一个包含子组件的react组件。子级有一个输入框,它将使用onChange更新其状态,然后onSubmit将向父级回调更新父级状态的文本。组件如下所示:

class App extends Component {

constructor(props) {
  super(props)
  this.state = {answer: ''};
}

answerHandler(_answer) {
  this.setState({
    answer: _answer
  })
}

render() {
  return (
    <div className='App'>
    <Letters answerHandler={this.answerHandler.bind(this)}/>
  </div>
);
}
}
export default App;
类应用程序扩展组件{
建造师(道具){
超级(道具)
this.state={答案:'};
}
回答者(回答者){
这是我的国家({
答复:(答复)
})
}
render(){
返回(
);
}
}
导出默认应用程序;
_

类字母扩展组件{
建造师(道具){
超级(道具);
this.state={value:''};
this.handleChange=this.handleChange.bind(this);
this.handleSubmit=this.handleSubmit.bind(this);
}
手变(活动){
this.setState({value:event.target.value});
}
handleSubmit(事件){
event.preventDefault()
this.props.answerHandler(response.data.word)
}
render(){
返回(
信件:
);
}
}
导出默认字母;
当运行测试时,我得到一条消息:方法“simulate”仅用于在单个节点上运行。2.取而代之的是

it('enter letters and check answer', () => {
  const wrapper = mount(<App />);
  wrapper.find('input').simulate('change', { target: { value: 'doof' }});
})
it('输入字母并检查答案',()=>{
const wrapper=mount();
find('input').simulate('change',{target:{value:'doof'}});
})

我不完全确定这意味着什么。我认为Ezyme的挂载应该创建包含所有组件的应用程序?如果我使用shallow而不是mount,它会显示0个节点而不是2个节点。环顾四周,这似乎表明我发现了回调,但这似乎很奇怪,你不能一起测试组件,所以我肯定我做错了什么。

你有两个输入字段:

<input type="text" value={this.state.value} onChange={this.handleChange} />
<input type="submit" value="Submit" />
const component=shallow();state('name')
将为您提供状态的name属性


顺便说一下,我更喜欢单独测试组件,使用“浅层”而不是“安装”。它将更容易测试,测试也不会那么脆弱。但这不是你的问题:)

你有两个输入字段:

<input type="text" value={this.state.value} onChange={this.handleChange} />
<input type="submit" value="Submit" />
const component=shallow();state('name')
将为您提供状态的name属性

顺便说一下,我更喜欢单独测试组件,使用“浅层”而不是“安装”。它将更容易测试,测试也不会那么脆弱。但这不是你的问题:)

wrapper.find('input').at(0).simulate('change', { target: { value: 'doof' }});