Saya bingung tentang cara mengakses <input>
nilai saat menggunakan mount
. Inilah yang saya dapatkan sebagai ujian saya:
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 mencetak undefined
. Tetapi jika saya sedikit memodifikasi kodenya, ini berfungsi:
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();
});
Kecuali, tentu saja, input.simulate
saluran tersebut gagal karena saya sedang menggunakan render
sekarang. Saya membutuhkan keduanya untuk bekerja dengan baik. Bagaimana cara mengatasinya?
EDIT :
Saya harus menyebutkan, <EditableText />
bukan merupakan komponen yang dikendalikan. Tetapi ketika saya masuk defaultValue
ke <input />
, tampaknya mengatur nilainya. Blok kode kedua di atas tidak mencetak nilai, dan juga jika saya memeriksa elemen input di Chrome dan mengetik $0.value
di konsol, itu menunjukkan nilai yang diharapkan.
input.render()
tidakreact-dom
render. Ini dia: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html