изменение имитации ввода не работает в ферменте с предоставленным объектом события - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть модульный тест, записанный как:

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')
}
...