Kako testirati padajuće izbornike u React komponentama s Enzymeom?

Nov 07, 2025

Ostavite poruku

Chris Evans
Chris Evans
Bloger zdrave hrane i ambasador marke Asclepius. Dijelim savjete o uključivanju biljnih ekstrakata u dnevne wellness rutine i pregledavam najnovije proizvode u industriji zdrave hrane.

Pozdrav, kolege React programeri! Danas ću govoriti o tome kako testirati padajuće izbornike u React komponentama s Enzymeom. Kao dobavljač enzima, iz prve ruke sam se uvjerio u važnost pravilnog testiranja u React projektima, posebno kada je riječ o tim dosadnim padajućim menijima.

Zašto je testiranje padajućih menija važno

Padajući izbori su uobičajena komponenta korisničkog sučelja u React aplikacijama. Koriste se za stvari poput odabira opcija, filtriranja podataka i kretanja izbornicima. Ali može biti i teško ispraviti ih. Mala pogreška u padajućem izborniku može dovesti do lošeg korisničkog iskustva, primjerice opcije se ne prikazuju ispravno ili se padajući izbornik ne zatvara kada bi trebao.

Tu na scenu dolazi testiranje. Pisanjem testova za padajuće izbornike možete uhvatiti ove greške rano u procesu razvoja, prije nego što dođu do proizvodnje. A Enzyme je izvrstan alat za postizanje upravo toga.

Početak rada s enzimom

Prije nego što zaronimo u padajuće izbornike za testiranje, idemo na brzinu proći kroz to kako postaviti Enzyme u vašem React projektu. Ako već niste, morat ćete instalirati Enzyme i njegov adapter za React. To možete učiniti koristeći npm ili pređu:

npm install --save-dev enzyme enzyme-adapter-react-16

Nakon što instalirate Enzyme, morat ćete ga konfigurirati da radi s vašom verzijom Reacta. U datoteci za postavljanje testa (običnosrc/setupTests.js), dodajte sljedeći kod:

uvoz enzima iz 'enzima'; uvoz adaptera iz 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: novi adapter() });

Sada ste spremni za početak testiranja!

Testiranje jednostavnog padajućeg izbornika

Započnimo s testiranjem jednostavne padajuće komponente. Evo primjera osnovnog padajućeg izbornika u Reactu:

import React, {useState} from 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const options = ['Opcija 1', 'Opcija 2', 'Opcija 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Prebaci padajući izbornik</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; izvezi zadani padajući izbornik;

Kako bismo testirali ovaj padajući izbornik, htjet ćemo se uvjeriti da klik na gumb isključuje vidljivost popisa opcija. Evo kako to možemo učiniti pomoću enzima:

import React iz 'react'; import { plitko } iz 'enzima'; import padajućeg izbornika iz './Dropdown'; describe('Dropdown', () => { it('treba uključiti padajući izbornik kada se klikne gumb', () => { const wrapper = shallow(<Dropdown />); const button = wrapper.find('button'); // U početku, padajući izbornik treba biti zatvoren expect(wrapper.find('ul').exists()).toBe(false); // Kliknite gumb da otvorite padajući izbornik button.simulate('click'); expect(wrapper.find()).toBe(true); // Ponovno kliknite gumb za zatvaranje button.simulate('ul').exists());

U ovom testu prvo koristimoplitkoprikazatiPadajući izbornikkomponenta. Zatim nalazimo gumb pomoćupronaćii simulirajte događaj klika pomoćusimulirati. Na kraju, koristimopostojikako biste provjerili je li popis opcija vidljiv ili ne.

Testiranje padajućeg odabira

Krenimo sada korak dalje i testirajmo odabir opcije na padajućem izborniku. Mi ćemo modificirati našePadajući izbornikkomponenta za rukovanje izborom opcija:

import React, {useState} from 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const [selectedOption, setSelectedOption] = useState(null); const options = ['Opcija 1', 'Opcija 2', 'Opcija 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; const selectOption = (opcija) => { setSelectedOption(opcija); setIsOpen(false); }; return ( <div> <button onClick={toggleDropdown}> {selectedOption ? selectedOption : 'Odaberi opciju'} </button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index} onClick={() => selectOption(option)}> {option} </li> ))} </ul> )} </div> ); }; izvezi zadani padajući izbornik;

Kako bismo testirali odabir opcije, morat ćemo simulirati klik na jednu od opcija i provjeriti je li odabrana opcija ispravno ažurirana. Evo testa:

import React iz 'react'; import { plitko } iz 'enzima'; import padajućeg izbornika iz './Dropdown'; describe('Dropdown', () => { it('treba odabrati opciju kada se klikne', () => { const wrapper = shallow(<Dropdown />); const button = wrapper.find('button'); // Otvaranje padajućeg izbornika button.simulate('click'); // Pronađite prvu opciju i kliknite je const firstOption = wrapper.find('li').first(); firstOption.simulate('click'); // Provjerite da li je odabrana opcija ažurirana (wrapper.find('button').text()).toBe('Option 1');

U ovom testu prvo otvaramo padajući izbornik klikom na gumb. Zatim pronalazimo prvu opciju pomoćuprvii simulirajte klik na njega. Na kraju provjeravamo je li tekst gumba ažuriran kako bi odražavao odabranu opciju.

Testiranje sa složenijim padajućim izbornikom

U aplikacijama iz stvarnog svijeta padajući izbornik može biti mnogo složeniji od naših jednostavnih primjera. Mogu imati ugniježđene opcije, prilagođeni stil ili asinkrono učitavanje podataka. Prilikom testiranja ovih složenijih padajućih izbornika morat ćete prilagoditi svoju strategiju testiranja u skladu s tim.

Na primjer, ako vaš padajući izbornik ima ugniježđene opcije, morat ćete testirati ponašanje i nadređene i podređene opcije. Možda ćete također morati upotrijebiti naprednije selektore enzima da pronađete određene elemente u padajućem izborniku.

Ako vaš padajući izbornik učitava podatke asinkrono, morat ćete koristiti tehnike kao što suasinkroni/čekajilisetTimeoutčekati da se podaci učitaju prije pokretanja testova. Evo primjera testiranja asinkronog padajućeg izbornika:

import React, { useState, useEffect } from 'react'; const AsyncDropdown = () => { const [isOpen, setIsOpen] = useState(false); const [opcije, setOpcije] = useState([]); useEffect(() => { const fetchOptions = async () => { const response = await fetch('https://api.example.com/options'); const data = await response.json(); setOptions(data); }; if (isOpen) { fetchOptions(); } }, [isOpen]); const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Prebaci padajući izbornik</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; izvezi zadani AsyncDropdown;
import React iz 'react'; import { plitko } iz 'enzima'; import AsyncDropdown iz './AsyncDropdown'; describe('AsyncDropdown', () => { it('treba učitati opcije kada se otvori padajući izbornik', async () => { global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve(['Opcija 1', 'Opcija 2', 'Opcija 3']), }) ); const wrapper = plitko (<AsyncDropdown />); // Otvaranje padajućeg izbornika. simulate ('click'); // Provjerite jesu li opcije učitane.

U ovom testu koristimoje.fnizrugivati ​​sedohvatitiAPI i vratiti neke ogledne podatke. Zatim otvaramo padajući izbornik i čekamo da se opcije učitaju pomoćučekaj omotač.update(). Na kraju provjeravamo je li prikazan točan broj opcija.

Zaključak

Testiranje padajućih izbornika u React komponentama s Enzymeom bitan je dio osiguravanja kvalitete i pouzdanosti vaših aplikacija. Slijedeći tehnike navedene u ovom postu na blogu, možete napisati učinkovite testove za jednostavne i složene padajuće izbornike.

Ako tražite visokokvalitetne Enzyme proizvode za svoje potrebe testiranja, tu smo da vam pomognemo. Također nudimo niz drugih proizvoda, kao što suVitamin B12 farmaceutske kvalitete Cas 13422-55-4 metilkobalamin u prahu,Tvornička cijena nano grafenskog praha, iKapsula s krilovim uljem.

Ako ste zainteresirani za kupnju bilo kojeg od naših proizvoda ili imate bilo kakvih pitanja, nemojte se ustručavati kontaktirati nas radi rasprave o nabavi. Uvijek nam je drago pomoći!

Krill Oil CapsuleFactory Price Nano Graphene Powder

Reference

  • Dokumentacija enzima: https://enzymejs.github.io/enzyme/
  • React Testing Library: https://testing-library.com/docs/react-testing-library/intro/
Pošaljite upit