Bagaimana cara menguji dropdown di komponen React dengan Enzyme?

Nov 07, 2025

Tinggalkan pesan

Chris Evans
Chris Evans
Blogger makanan kesehatan dan duta merek Asclepius. Saya berbagi tips tentang memasukkan ekstrak tanaman ke dalam rutinitas kesehatan harian dan meninjau produk terbaru dalam industri makanan kesehatan.

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!

Krill Oil CapsuleFactory Price Nano Graphene Powder

Referensi

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