Я не понимаю, как получить доступ к <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