我的单元测试写为:
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')
}