无法在测试用例中设置任何输入值

时间:2019-08-12 13:52:39

标签: reactjs enzyme

我是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!
});

0 个答案:

没有答案