Halo, sesama pengembang React! Hari ini, saya akan berbicara tentang cara menguji dropdown di komponen React dengan Enzyme. Sebagai pemasok Enzim, saya telah melihat secara langsung pentingnya pengujian yang tepat dalam proyek React, terutama ketika menyangkut dropdown yang mengganggu.
Mengapa Menguji Dropdown Itu Penting
Dropdown adalah komponen UI umum dalam aplikasi React. Mereka digunakan untuk hal-hal seperti memilih opsi, memfilter data, dan menavigasi menu. Namun hal tersebut juga sulit untuk dilakukan dengan benar. Bug kecil di dropdown dapat menyebabkan pengalaman pengguna yang buruk, seperti opsi tidak muncul dengan benar atau dropdown tidak ditutup sebagaimana mestinya.
Di situlah pengujian diperlukan. Dengan menulis pengujian untuk dropdown, Anda dapat mendeteksi bug ini di awal proses pengembangan, sebelum mencapai produksi. Dan Enzim adalah alat yang hebat untuk melakukan hal itu.
Memulai dengan Enzim
Sebelum kita mendalami pengujian dropdown, mari kita bahas cara menyiapkan Enzyme di proyek React Anda. Jika Anda belum melakukannya, Anda perlu menginstal Enzyme dan adaptornya untuk React. Anda dapat melakukan ini menggunakan npm atau benang:
npm install --save-dev enzim enzim-adaptor-reaksi-16
Setelah Anda menginstal Enzyme, Anda harus mengonfigurasinya agar berfungsi dengan versi React Anda. Dalam file pengaturan pengujian Anda (biasanyasrc/setupTests.js), tambahkan kode berikut:
impor Enzim dari 'enzim'; impor Adaptor dari 'enzyme-adapter-react-16'; Enzim.konfigurasi({ adaptor: adaptor baru() });
Sekarang Anda siap untuk memulai pengujian!
Menguji Dropdown Sederhana
Mari kita mulai dengan menguji komponen dropdown sederhana. Berikut ini contoh dropdown dasar di React:
impor Bereaksi, { useState } dari 'reaksi'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); opsi const = ['Opsi 1', 'Opsi 2', 'Opsi 3']; const beralihDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Alihkan Dropdown</button> {isOpen && ( <ul> {options.map((option, indeks) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; ekspor Dropdown bawaan;
Untuk menguji dropdown ini, kami ingin memastikan bahwa mengklik tombol akan mengubah visibilitas daftar opsi. Inilah cara kita melakukannya dengan menggunakan Enzim:
impor Bereaksi dari 'bereaksi'; impor {dangkal } dari 'enzim'; impor Dropdown dari './Dropdown'; deskripsikan('Dropdown', () => { it('harus mengaktifkan dropdown ketika tombol diklik', () => { const wrapper = dangkal(<Dropdown />); const button = wrapper.find('button'); // Awalnya, dropdown harus ditutup wish(wrapper.find('ul').exists()).toBe(false); // Klik tombol untuk membuka tombol dropdown.simulate('click'); hope(wrapper.find('ul').exists()).toBe(true); // Klik tombol lagi untuk menutup tombol dropdown.simulate('click');expect(wrapper.find('ul').exists()).toBe(false });
Dalam pengujian ini, pertama-tama kita menggunakandangkaluntuk merendertarik-turunkomponen. Kemudian kami menemukan tombol menggunakanmenemukandan simulasikan acara klik menggunakanmensimulasikan. Akhirnya, kami menggunakanadauntuk memeriksa apakah daftar opsi terlihat atau tidak.
Menguji Seleksi Dropdown
Sekarang mari kita melangkah lebih jauh dan menguji pilihan opsi di dropdown. Kami akan memodifikasi kamitarik-turunkomponen untuk menangani pemilihan opsi:
impor Bereaksi, { useState } dari 'reaksi'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const [pilihan yang dipilih, setpilihan yang dipilih] = useState(null); opsi const = ['Opsi 1', 'Opsi 2', 'Opsi 3']; const beralihDropdown = () => { setIsOpen(!isOpen); }; const selectOption = (pilihan) => { setSelectedOption(pilihan); setIsOpen(salah); }; return ( <div> <button onClick={toggleDropdown}> {selectedOption ?selectedOption : 'Pilih opsi'} </button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index} onClick={() => selectOption(option)}> {option} </li> ))} </ul> )} </div> ); }; ekspor Dropdown bawaan;
Untuk menguji pemilihan opsi, kita perlu mensimulasikan klik pada salah satu opsi dan memeriksa apakah opsi yang dipilih telah diperbarui dengan benar. Inilah tesnya:
impor Bereaksi dari 'bereaksi'; impor {dangkal } dari 'enzim'; impor Dropdown dari './Dropdown'; deskripsikan('Dropdown', () => { it('harus memilih opsi saat diklik', () => { const wrapper = dangkal(<Dropdown />); const button = wrapper.find('button'); // Buka tombol dropdown.simulate('click'); // Temukan opsi pertama dan klik const firstOption = wrapper.find('li').first(); firstOption.simulate('click'); // Centang jika opsi yang dipilih diperbaruiexpect(wrapper.find('button').text()).toBe('Option 1');
Dalam pengujian ini, pertama-tama kita buka dropdown dengan mengklik tombol. Kemudian kami menemukan opsi pertama menggunakanPertamadan simulasikan klik di atasnya. Terakhir, kami memeriksa apakah teks tombol telah diperbarui untuk mencerminkan opsi yang dipilih.
Menguji dengan Dropdown yang Lebih Kompleks
Dalam aplikasi dunia nyata, dropdown bisa menjadi jauh lebih kompleks daripada contoh sederhana kita. Mereka mungkin memiliki opsi bertingkat, gaya khusus, atau pemuatan data asinkron. Saat menguji dropdown yang lebih kompleks ini, Anda harus menyesuaikan strategi pengujian Anda.
Misalnya, jika dropdown Anda memiliki opsi bertingkat, Anda harus menguji perilaku opsi induk dan anak. Anda mungkin juga perlu menggunakan penyeleksi Enzim yang lebih canggih untuk menemukan elemen tertentu di dropdown.
Jika dropdown Anda memuat data secara asinkron, Anda harus menggunakan teknik sepertiasync/menungguatausetWaktu habisuntuk menunggu data dimuat sebelum menjalankan pengujian Anda. Berikut ini contoh pengujian dropdown asinkron:
impor Bereaksi, { useState, useEffect } dari 'reaksi'; const AsyncDropdown = () => { const [isOpen, setIsOpen] = useState(false); const [pilihan, setOptions] = useState([]); useEffect(() => { const FetchOptions = async () => { const respon = menunggu pengambilan('https://api.example.com/options'); const data = menunggu respon.json(); setOptions(data); }; if (isOpen) { mengambilOptions(); } }, [isOpen]); const beralihDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Alihkan Dropdown</button> {isOpen && ( <ul> {options.map((option, indeks) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; ekspor AsyncDropdown default;
impor Bereaksi dari 'bereaksi'; impor {dangkal } dari 'enzim'; impor AsyncDropdown dari './AsyncDropdown'; deskripsikan('AsyncDropdown', () => { it('harus memuat opsi ketika dropdown dibuka', async () => { global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve(['Opsi 1', 'Opsi 2', 'Opsi 3']), }) ); const wrapper = dangkal(<AsyncDropdown />); const button = wrapper.find('button'); // Buka dropdown button.simulate('click'); // Tunggu hingga opsi dimuat waiting wrapper.update();
Dalam pengujian ini, kami menggunakanadalah.fnuntuk mengejekmengambilAPI dan kembalikan beberapa data sampel. Kemudian kita buka dropdown dan tunggu opsi dimuat menggunakantunggu wrapper.update(). Terakhir, kami memeriksa apakah jumlah opsi yang diberikan benar.
Kesimpulan
Menguji dropdown pada komponen React dengan Enzyme adalah bagian penting untuk memastikan kualitas dan keandalan aplikasi Anda. Dengan mengikuti teknik yang diuraikan dalam postingan blog ini, Anda dapat menulis pengujian yang efektif untuk dropdown sederhana dan kompleks.
Jika Anda mencari produk Enzim berkualitas tinggi untuk kebutuhan pengujian Anda, kami siap membantu. Kami juga menawarkan berbagai produk lainnya, sepertiVitamin B12 Kelas Farmasi Cas 13422-55-4 Bubuk Methylcobalamin,Bubuk Nano Graphene Harga Pabrik, DanKapsul Minyak Krill.
Jika Anda tertarik untuk membeli produk kami atau memiliki pertanyaan, jangan ragu untuk menghubungi kami untuk diskusi pengadaan. Kami selalu dengan senang hati membantu!


Referensi
- Dokumentasi Enzim: https://enzymejs.github.io/enzyme/
- Perpustakaan Pengujian React: https://testing-library.com/docs/react-testing-library/intro/