我是Enzyme的新手,我正在尝试通过Enzyme设置React组件中的输入值。
我尝试使用input.simulate('change', {target: { value: 'wtf'}}
进行设置,并且尝试使用'component.setState({...})';
进行设置。 setState实际上确实将状态设置为正确,但是输入仍然为空。
我的组件输入简单
<input ... name="email" value={this.state.email} onChange={this.handleChange}/>
并更改处理程序
handleChange=(e)=>
this.setState({[e.target.name]:e.target.value});
我使用mount
是因为shallow
找不到任何输入
const login = mount(<Login/>);
const emailInput = login.find('input[name="email"]');
emailInput.simulate('focus');
emailInput.simulate('change', { target: { value: 'Changed', name: 'email' } });
emailInput.simulate('blur');
console.log(emailInput.props().value); // outputs '' => WRONG!
// I've tried to setState like this too
login.setState({ email: 'test@test.com' });
console.log(login.state('email')); // outputs 'test@test.com' => OK!
inputs.forEach(input=>{
console.log(input.props().value); // outputs '' => WRONG!
});