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.simulatesaluran tersebut gagal karena saya sedang menggunakan rendersekarang. Saya membutuhkan keduanya untuk bekerja dengan baik. Bagaimana cara mengatasinya?
EDIT :
Saya harus menyebutkan, <EditableText />bukan merupakan komponen yang dikendalikan. Tetapi ketika saya masuk defaultValueke <input />, tampaknya mengatur nilainya. Blok kode kedua di atas tidak mencetak nilai, dan juga jika saya memeriksa elemen input di Chrome dan mengetik $0.valuedi konsol, itu menunjukkan nilai yang diharapkan.
input.render()tidakreact-domrender. Ini dia: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html