Мене бентежить, як отримати доступ до <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