Реагировать на изменение свойств компонентов с помощью фермента

Я изменяю пример, найденный здесь:

https://github.com/airbnb/enzyme/blob/master/docs/api/ReactWrapper/setProps.md

class Foo extends React.Component {
    render() {
        return (
            <input className={this.props.name} type="text" value={this.props.name} onChange={()=>{}} />
        );
    }
}

it('should pass and does not', ()=> {
    const wrapper = mount(<Foo name="foo" />);
    expect(wrapper.find('.foo').html()).toBe(`<input class="foo" type="text" value="foo">`);
    wrapper.setProps({ name: 'bar' });
    expect(wrapper.find('.bar').html()).toBe(`<input class="bar" type="text" value="bar">`);
});

Result: Expected '<input class="bar" type="text" value="foo">' to be '<input class="bar" type="text" value="bar">'.

Из результатов теста видно, что атрибут className был корректно обновлен при смене реквизита. Но значение входа по-прежнему неправильно установлено на "foo".

Любые идеи о том, как я могу утверждать, что значение было правильно изменено на компоненте, получающем новые реквизиты для атрибута значения на входе?

1 ответ

Вы должны вызвать метод .update() на обертке. (Сразу после установки новых реквизитов) Это заставит обновить компонент, и значение входа должно измениться.

Вы можете прочитать больше об этом здесь: http://airbnb.io/enzyme/docs/api/ShallowWrapper/update.html

Другие вопросы по тегам