Nie mam pojęcia, jak uzyskać dostęp do <input>
wartości podczas używania mount
. Oto, co mam jako mój test:
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();
});
Konsola drukuje undefined
. Ale jeśli trochę zmodyfikuję kod, działa:
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();
});
Tyle że, oczywiście, input.simulate
linia zawodzi, ponieważ używam render
teraz. Potrzebuję obu, aby działać poprawnie. Jak to naprawić?
EDYCJA :
Powinienem wspomnieć, że <EditableText />
nie jest elementem kontrolowanym. Ale kiedy przechodzę defaultValue
do <input />
, wydaje się , że ustawia wartość. Drugi blok kodu powyżej wypisuje wartość i podobnie, jeśli sprawdzę element wejściowy w Chrome i wpiszę $0.value
w konsoli, pokazuje oczekiwaną wartość.
input.render()
jestreact-dom
renderowany. To jest to: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html