<input>
Kullanırken değere nasıl erişeceğim konusunda kafam karıştı mount
. İşte testim olarak sahip olduğum şey:
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();
});
Konsol çıktı undefined
. Ancak kodu biraz değiştirirsem, işe yarıyor:
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();
});
Tabii ki şu anda input.simulate
kullandığım için hat başarısız oluyor render
. Her ikisinin de düzgün çalışması için ihtiyacım var. Bunu nasıl düzeltirim?
DÜZENLE :
<EditableText />
Kontrollü bir bileşen olmadığını belirtmeliyim . Ama defaultValue
içeri girdiğimde <input />
, değeri belirliyor gibi görünüyor. Yukarıdaki ikinci kod bloğu değeri yazdırıyor ve aynı şekilde Chrome'daki giriş öğesini inceleyip $0.value
konsola yazarsam beklenen değeri gösteriyor.
input.render()
Değilreact-dom
işlemek. İşte bu: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html