提供事件对象的情况下,输入模拟更改不适用于酶

时间:2018-09-28 06:46:01

标签: redux-form enzyme

我的单元测试写为:

it('shows validation message when predicate is violated', () => {
    const input = subject.find('input').at(0);   
    input.simulate('change', { target: { value: " " } });      
    input.simulate('blur');
    expect(subject.find('[role="alert"]').length).toEqual(1);
});

我得到的期望值等于:1,收到:0。

输入验证获取空值并返回错误消息。我已经测试过subject.find('[role="alert"]')将捕获错误消息(如果显示的话),并且input.props().value也给出空字符串。因此,我怀疑simulate('click')无效。我经历了很多相关的问题,但是没有找到答案,希望有人可以帮忙!

我的输入元素很简单:

<Field
  name="customerFirstName"
  label = "First name"
  type="text"
  component={inputField}
  validate={required}
/>


const inputField = props => {
    const { input, label, type, meta: { touched, error }} = props;

    return (
        <FormGroup>
            <ControlLabel>{label}</ControlLabel>
            <FormControl {...input} placeholder={label} type={type} />
            { touched && error && <span>{error}</span> }
        </FormGroup>
    )
}

验证为:

export const required = value => {
    if (value) { value = value.trim() };
    return value ? undefined : ErrorMessage('This field is required')
}

0 个答案:

没有答案