Komponen pengujian dalam aplikasi React adalah bagian penting dari proses pengembangan, memastikan bahwa setiap bagian dari aplikasi berfungsi seperti yang diharapkan. Saat berhadapan dengan React.Lazy, yang memungkinkan pemisahan kode dan pemuatan malas komponen, pengujian bisa menjadi sedikit lebih menantang. Sebagai pemasok enzim, saya telah menemukan banyak skenario di mana pengembang berjuang dengan komponen pengujian menggunakan react.lazy. Di blog ini, saya akan membagikan beberapa strategi yang efektif untuk menguji komponen dengan bereaksi. Lazim dalam bereaksi menggunakan enzim.
Memahami reaksi.
Sebelum terjun ke pengujian, penting untuk memahami apa yang dilakukan React.lazy. React.lazy adalah fungsi yang memungkinkan Anda untuk membuat impor dinamis sebagai komponen biasa. Ini sangat berguna untuk pemisahan kode, yang membantu mengurangi ukuran bundel awal aplikasi Anda dengan memuat komponen hanya saat dibutuhkan.
const lazyComponent = react.lazy (() => import ('./ LazyComponent')); function app () {return (<div> <react.suspense fallback = {<div> memuat ... </div>}> <lazyComponent/> </react.suspense> </div>); }
Dalam kode di atas,LazyComponentdimuat dengan malas, danReact.suspensedigunakan untuk menunjukkan UI fallback saat komponen sedang dimuat.
Menyiapkan lingkungan pengujian
Untuk menguji komponen dengan react.lazy menggunakan enzim, Anda harus mengatur lingkungan pengujian yang tepat. Pertama, pastikan Anda memiliki dependensi yang diperlukan. Anda akan membutuhkan React, Enzyme, dan Jest (atau kerangka kerja pengujian lainnya).
NPM Instal-Save-Dev Enzyme Enzyme-Adapter-Reac-16 Jest
Selanjutnya, konfigurasikan enzim agar berfungsi dengan versi React Anda. Buat asetuptests.jsFile di direktori root proyek Anda dan tambahkan kode berikut:
Impor enzim dari 'enzim'; adaptor impor dari 'enzim-adapter-react-16'; Enzyme.configure ({adaptor: adaptor baru ()});
Menguji komponen dengan react.lazy
Saat menguji komponen dengan React.lazy, ada beberapa hal yang perlu diingat. Karena komponen yang dimuat malas dimuat secara asinkron, Anda perlu menangani sifat asinkron dari proses pemuatan dalam tes Anda.
Menguji Fallback UI
Hal pertama yang dapat Anda uji adalah Fallback UI. Ketika komponen yang dimuat malas sedang dimuat, UI fallback harus ditampilkan.
impor bereaksi dari 'bereaksi'; impor {mount} dari 'enzim'; Impor aplikasi dari './app'; jelaskan ('app', () => {it ('harus membuat fallback ui saat komponen malas memuat', () => {const wrapper = mount (<app />); harapkan (wrapper.find ('div'). text ()). tobe ('memuat ...');});});
Dalam tes ini, kami memasangAplikasiKomponen dan periksa apakah Fallback UI ditampilkan.
Menguji komponen yang dimuat malas
Untuk menguji komponen yang dimuat malas itu sendiri, Anda harus menunggu untuk dimuat. Salah satu cara untuk melakukan ini adalah dengan menggunakanbertindakdari utilitas pengujian React.
impor bereaksi dari 'bereaksi'; impor {mount} dari 'enzim'; impor {ACT} dari 'react-dom/test-utils'; Impor aplikasi dari './app'; describe('App', () => { it('should render lazy component after it is loaded', async () => { let wrapper; await act(async () => { wrapper = mount(<App />); }); wrapper.update(); expect(wrapper.find('LazyComponent')).toHaveLength(1); }); });
Dalam tes ini, kami menggunakanbertindakuntuk membungkus pemasanganAplikasikomponen. Ini memastikan bahwa semua pembaruan negara dan efek samping diselesaikan sebelum kami memeriksa apakah komponen yang dimuat malas diberikan.
Menangani kesalahan dalam pemuatan malas
Aspek penting lainnya dari pengujian adalah menangani kesalahan dalam pemuatan malas. Jika ada kesalahan saat memuat komponen yang malas,React.suspenseharus menanganinya dengan anggun.
impor bereaksi dari 'bereaksi'; impor {mount} dari 'enzim'; impor {ACT} dari 'react-dom/test-utils'; Impor aplikasi dari './app'; jelaskan ('app', () => {it ('harus menangani kesalahan dalam pemuatan malas', async () => {const mockerror = kesalahan baru ('gagal memuat komponen'); jest.spyon (react, 'lazy'). mockImplement (() => {throw mockerror;}; let {let let /aclapper (acync = {{{{{{{) (let {{{); });
Dalam tes ini, kami menggunakanadalah. Spyonuntuk mengejekBereaksi.lazyberfungsi dan melempar kesalahan. Lalu kami memeriksa apakah UI penanganan kesalahan ditampilkan.
Menggunakan fitur enzim untuk pengujian
Enzim menyediakan beberapa fitur yang dapat berguna untuk menguji komponen dengan reaksi. Misalnya, Anda dapat menggunakanmensimulasikanuntuk memicu peristiwa pada komponen.
impor bereaksi dari 'bereaksi'; impor {mount} dari 'enzim'; impor {ACT} dari 'react-dom/test-utils'; Impor aplikasi dari './app'; jelaskan ('app', () => {it ('harus menangani acara klik pada komponen malas', async () => {let wrapper; Await Act (async () => {wrapper = mount (<app />);}); wrapper.update (); const lazyComponent = wrapper.find ('lazycoCpon (lazy'; const lazyconent = wrapper. Harapkan (LazyComponent.State ('diklik')). TOBE (true);
Dalam tes ini, kami mensimulasikan acara klik pada komponen yang dimuat malas dan memeriksa apakah status komponen diperbarui.
Kesimpulan
Komponen pengujian dengan bereaksi. Lazim dalam bereaksi menggunakan enzim membutuhkan penanganan yang cermat dari sifat asinkron dari pemuatan malas. Dengan mengikuti strategi yang diuraikan dalam blog ini, Anda dapat secara efektif menguji komponen Anda dan memastikan bahwa aplikasi Anda berfungsi seperti yang diharapkan.
Jika Anda tertarik untuk mengeksplorasi lebih banyak produk yang terkait dengan enzim, kami menawarkan berbagai produk enzim berkualitas tinggi yang dapat meningkatkan proses pengembangan Anda. Anda mungkin juga tertarik dengan ekstrak herbal kami yang lain sepertiFibroin sutra terlarut air,Minyak jarak kadar makanan berkualitas tinggi/minyak jarak 100%, DanBubuk biji okra kering berkualitas tinggi/bubuk ekstrak biji okra.
Jika Anda memiliki pertanyaan atau ingin mendiskusikan kebutuhan spesifik Anda, jangan ragu untuk menghubungi kami untuk diskusi pengadaan. Kami di sini untuk membantu Anda menemukan solusi terbaik untuk proyek Anda.
Referensi
- Bereaksi dokumentasi resmi tentang pemisahan kode: https://reactjs.org/docs/code-splitting.html
- Dokumentasi Resmi Enzim: https://enzymejs.github.io/enzyme/
- Dokumentasi Resmi Jest: https://jestjs.io/