Я не понимаю, как получить доступ к <input>
значению при использовании mount
. Вот что у меня в качестве теста:
it('cancels changes when user presses esc', done => {
const wrapper = mount(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.render().attr('value'));
input.simulate('focus');
done();
});
Консоль распечатает undefined
. Но если немного изменить код, он заработает:
it('cancels changes when user presses esc', done => {
const wrapper = render(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.val());
input.simulate('focus');
done();
});
За исключением, конечно, input.simulate
сбоя линии, поскольку я использую render
сейчас. Мне нужно, чтобы оба работали правильно. Как это исправить?
ИЗМЕНИТЬ :
Следует отметить, что <EditableText />
это не управляемый компонент. Но когда я перехожу defaultValue
внутрь <input />
, кажется, что он устанавливает значение. Второй блок кода выше распечатывает значение, и аналогично, если я проверяю элемент ввода в Chrome и набираю $0.value
в консоли, он показывает ожидаемое значение.
input.render()
неreact-dom
рендеринг. Это так: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html