Hei ada, pemaju React Fellow! Hari ini, saya akan bercakap tentang bagaimana untuk menguji dropdowns dalam komponen React dengan enzim. Sebagai pembekal enzim, saya telah melihat secara langsung pentingnya ujian yang betul dalam projek -projek React, terutamanya apabila ia datang kepada dropdowns yang menjengkelkan.
Mengapa Menguji Kemerosotan
Dropdowns adalah komponen UI biasa dalam aplikasi React. Mereka digunakan untuk perkara seperti memilih pilihan, penapisan data, dan menavigasi menu. Tetapi mereka juga boleh menjadi rumit untuk mendapatkan hak. Bug kecil dalam lungsur turun boleh menyebabkan pengalaman pengguna yang lemah, seperti pilihan yang tidak muncul dengan betul atau jatuh turun yang tidak ditutup apabila sepatutnya.
Di sinilah ujian masuk. Dengan menulis ujian untuk dropdowns anda, anda boleh menangkap pepijat ini pada awal proses pembangunan, sebelum mereka membuatnya untuk pengeluaran. Dan enzim adalah alat yang hebat untuk melakukan perkara itu.
Bermula dengan enzim
Sebelum kita menyelam untuk menguji dropdowns, mari dengan cepat pergi ke atas cara menubuhkan enzim dalam projek React anda. Sekiranya anda belum melakukannya, anda perlu memasang enzim dan penyesuai untuk React. Anda boleh melakukan ini menggunakan npm atau benang:
Pemasangan NPM-S-SAVE-DEV Enzim-Adapter-ReAct-16
Sebaik sahaja anda memasang enzim, anda perlu mengkonfigurasinya untuk bekerja dengan versi React anda. Dalam fail persediaan ujian anda (biasanyasrc/setuptests.js), tambahkan kod berikut:
enzim import dari 'enzim'; penyesuai import dari 'enzim-adapter-react-16'; Enzyme.configure ({Adapter: New Adapter ()});
Sekarang anda sudah bersedia untuk memulakan ujian!
Menguji jatuh turun sederhana
Mari kita mulakan dengan menguji komponen dropdown yang mudah. Berikut adalah contoh dropdown asas dalam React:
Import React, {Usestate} dari 'React'; const dropdown = () => {const [isOpen, setIsOpen] = useState (false); const options = ['Option 1', 'Option 2', 'Option 3']; const toggledRopdown = () => {setIsOpen (! isOpen); }; kembali (<div> <butang onclick = {toggledropdown}> toggle dropdown </button> {isOpen && (<ul> {options.map ((option, index) => (<li key = {index}> {option} </li>)} }; dropdown lalai eksport;
Untuk menguji dropdown ini, kami ingin memastikan bahawa mengklik butang menukarkan penglihatan senarai pilihan. Inilah cara kita dapat melakukannya menggunakan enzim:
Import bertindak balas daripada 'bertindak balas'; import {cetek} dari 'enzim'; dropdown import dari './dropdown'; terangkan ('dropdown', () => {it ('harus togol dropdown apabila butang diklik', () => {const wrapper = cetek (<propdown />); const button = wrapper.find ('butang'); // Button.Simulate ('klik');
Dalam ujian ini, kita mula -mula menggunakancetekuntuk menjadikannyaDropdownkomponen. Kemudian kita dapati butang menggunakancaridan mensimulasikan acara klik menggunakanmensimulasikan. Akhirnya, kami menggunakannyaadaUntuk memeriksa sama ada senarai pilihan kelihatan atau tidak.
Ujian pemilihan dropdown
Sekarang mari kita mengambil langkah lebih jauh dan menguji pemilihan pilihan dalam lungsur turun. Kami akan mengubah suai kamiDropdownkomponen untuk mengendalikan pilihan pilihan:
Import React, {Usestate} dari 'React'; const dropdown = () => {const [isOpen, setIsOpen] = useState (false); const [SelectedOption, setSelectedOption] = useState (null); const options = ['Option 1', 'Option 2', 'Option 3']; const toggledRopdown = () => {setIsOpen (! isOpen); }; const selectOption = (option) => {setSelectedOption (option); setIsOpen (palsu); }; kembali (<div> <butang onclick = {toggledropdown}> {SelectedOption? SelectedOption: 'Pilih pilihan'} </butang> {isOpen && (<ul> {options.map ((opsyen) => )} </div>); }; dropdown lalai eksport;
Untuk menguji pemilihan pilihan, kami perlu mensimulasikan klik pada salah satu pilihan dan periksa sama ada pilihan yang dipilih dikemas kini dengan betul. Inilah ujian:
Import bertindak balas daripada 'bertindak balas'; import {cetek} dari 'enzim'; dropdown import dari './dropdown'; terangkan ('dropdown', () => {it ('harus memilih pilihan apabila diklik', () => {const wrapper = cetek (<dropdown />); const button = wrapper.find ('butang'); // Buka butang dropdown.simulate ('klik'); / FirstOption.Simulate ('klik');
Dalam ujian ini, kami mula -mula membuka dropdown dengan mengklik butang. Kemudian kita dapati pilihan pertama menggunakanPertamadan simulasi klik padanya. Akhirnya, kami menyemak sama ada teks butang telah dikemas kini untuk mencerminkan pilihan yang dipilih.
Ujian dengan dropdowns yang lebih kompleks
Dalam aplikasi dunia nyata, dropdowns boleh menjadi lebih kompleks daripada contoh mudah kita. Mereka mungkin mempunyai pilihan bersarang, gaya tersuai, atau pemuatan data tak segerak. Apabila menguji dropdowns yang lebih kompleks ini, anda perlu menyesuaikan strategi ujian anda dengan sewajarnya.
Sebagai contoh, jika dropdown anda mempunyai pilihan bersarang, anda perlu menguji tingkah laku kedua -dua pilihan ibu bapa dan kanak -kanak. Anda juga mungkin perlu menggunakan pemilih enzim yang lebih maju untuk mencari elemen tertentu dalam lungsur turun.
Sekiranya dropdown anda memuatkan data secara asynchronously, anda perlu menggunakan teknik sepertiasync/menungguatausetTimeoutuntuk menunggu data dimuat sebelum menjalankan ujian anda. Berikut adalah contoh menguji dropdown asynchronous:
import react, {usestate, useeffect} dari 'react'; const asyncDropdown = () => {const [isOpen, setIsOpen] = useState (false); const [pilihan, setOptions] = useState ([]); useeffect (() => {const fetchOptions = async () => {const response = Await fetch ('https://api.example.com/Options'); const data = menunggu response.json (); setOptions (data);}; const toggledRopdown = () => {setIsOpen (! isOpen); }; kembali (<div> <butang onclick = {toggledropdown}> toggle dropdown </button> {isOpen && (<ul> {options.map ((option, index) => (<li key = {index}> {option} </li>)} }; eksport lalai asyncdropdown;
Import bertindak balas daripada 'bertindak balas'; import {cetek} dari 'enzim'; import asyncdropdown dari './asyncdropdown'; terangkan ('asyncdropdown', () => {it ('harus memuatkan pilihan apabila jatuh turun dibuka', async () => {global.fetch = jest.fn () => janji.resolve ({json: () />);
Dalam ujian ini, kami menggunakanis.fnuntuk mengejekAmbilAPI dan mengembalikan beberapa data sampel. Kemudian kami membuka dropdown dan tunggu pilihan untuk memuatkan menggunakanTunggu Wrapper.Update (). Akhirnya, kami menyemak sama ada bilangan pilihan yang betul diberikan.
Kesimpulan
Menguji dropdowns dalam komponen React dengan enzim adalah bahagian penting dalam memastikan kualiti dan kebolehpercayaan aplikasi anda. Dengan mengikuti teknik yang digariskan dalam catatan blog ini, anda boleh menulis ujian yang berkesan untuk kedua -dua dropdown mudah dan kompleks.
Jika anda sedang mencari produk enzim berkualiti tinggi untuk keperluan ujian anda, kami di sini untuk membantu. Kami juga menawarkan pelbagai produk lain, sepertiVitamin B12 Gred Farmaseutikal CAS 13422-55-4 Serbuk Methylcobalamin,Harga Kilang Nano Graphene Powder, danKapsul minyak krill.
Jika anda berminat untuk membeli mana -mana produk kami atau mempunyai sebarang pertanyaan, jangan ragu untuk menghubungi kami untuk perbincangan perolehan. Kami sentiasa gembira dapat membantu!


Rujukan
- Dokumentasi enzim: https://enzymejs.github.io/enzyme/
- Perpustakaan Ujian React: https://testing-library.com/docs/react-testing-library/intro/