Cum se testează meniurile derulante din componentele React cu Enzyme?

Nov 07, 2025

Lăsaţi un mesaj

Chris Evans
Chris Evans
Health Food Blogger și Ambasador al mărcii Asclepius. Împărtășesc sfaturi despre încorporarea extractelor de plante în rutine de wellness zilnice și revizuiesc cele mai noi produse din industria alimentară din domeniul sănătății.

Bună, colegi dezvoltatori React! Astăzi, voi vorbi despre cum să testați meniurile derulante din componentele React cu Enzyme. În calitate de furnizor de enzime, am văzut direct importanța testării adecvate în proiectele React, mai ales când vine vorba de acele meniuri derulante neplăcute.

De ce contează testarea dropdown-urilor

Mențiunile derulante sunt o componentă obișnuită a interfeței de utilizare în aplicațiile React. Sunt folosite pentru lucruri precum selectarea opțiunilor, filtrarea datelor și navigarea în meniuri. Dar pot fi, de asemenea, dificil de făcut corect. O mică eroare într-un meniu drop-down poate duce la o experiență slabă a utilizatorului, cum ar fi opțiunile care nu apar corect sau meniul drop-down nu se închide când ar trebui.

Aici intervine testarea. Scriind teste pentru meniurile dvs. derulante, puteți detecta aceste erori la începutul procesului de dezvoltare, înainte ca acestea să ajungă în producție. Și Enzyme este un instrument excelent pentru a face exact asta.

Noțiuni introductive cu Enzyme

Înainte de a ne lansa în meniurile derulante de testare, să trecem rapid peste cum să configurați Enzyme în proiectul dvs. React. Dacă nu ați făcut-o deja, va trebui să instalați Enzyme și adaptorul său pentru React. Puteți face acest lucru folosind npm sau yarn:

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

După ce ați instalat Enzyme, va trebui să îl configurați pentru a funcționa cu versiunea dvs. React. În fișierul de configurare de testare (de obiceisrc/setupTests.js), adăugați următorul cod:

import Enzyme din „enzimă”; import Adapter de la „enzima-adapter-react-16”; Enzyme.configure({ adaptor: adaptor nou() });

Acum sunteți gata să începeți testarea!

Testarea unui dropdown simplu

Să începem prin a testa o componentă derulantă simplă. Iată un exemplu de meniu derulant de bază în React:

import React, { useState } din 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const options = ['Opțiunea 1', 'Opțiunea 2', 'Opțiunea 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Toggle Dropdown</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; Export implicit Dropdown;

Pentru a testa acest meniu derulant, vom dori să ne asigurăm că făcând clic pe butonul comută vizibilitatea listei de opțiuni. Iată cum putem face asta folosind Enzyme:

import React din 'react'; import { superficial } din „enzimă”; import dropdown din „./Dropdown”; describe('Dropdown', () => { it('ar trebui să comute în meniul drop-down când se face clic pe butonul', () => { const wrapper = superficial(<Dropdown />); const button = wrapper.find('button'); // Inițial, meniul drop-down ar trebui să fie închis aștept(wrapper.find('ul'). button.simulate('click'); expect(wrapper.find('ul').exists()).toBe(true);

În acest test, folosim mai întâisuperficiala reda peScapă joscomponentă. Apoi găsim butonul folosindgăsiși simulați un eveniment de clic folosindsimula. În cele din urmă, folosimexistăpentru a verifica dacă lista de opțiuni este vizibilă sau nu.

Testarea selectării meniului derulant

Acum să facem lucrurile cu un pas mai departe și să testăm selecția unei opțiuni din meniul drop-down. Ne vom modificaScapă joscomponentă pentru a gestiona selecția opțiunilor:

import React, { useState } din 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const [selectedOption, setSelectedOption] = useState(null); const options = ['Opțiunea 1', 'Opțiunea 2', 'Opțiunea 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; const selectOption = (opțiune) => { setSelectedOption(opțiune); setIsOpen(fals); }; return ( <div> <button onClick={toggleDropdown}> {selectedOption ? selectedOption: „Selectați o opțiune”} </button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index} onClick={() selectOption)}}> </button> {options.map((option, index) => ( <li key={index} onClick={() selectOption)}}> </button </div>); }; Export implicit Dropdown;

Pentru a testa selecția opțiunii, va trebui să simulăm un clic pe una dintre opțiuni și să verificăm dacă opțiunea selectată este actualizată corect. Iată testul:

import React din 'react'; import { superficial } din „enzimă”; import dropdown din „./Dropdown”; describe('Dropdown', () => { it('ar trebui să selecteze o opțiune atunci când dați clic', () => { const wrapper = superficial(<Dropdown />); const button = wrapper.find('button'); // Deschideți meniul drop-down button.simulate('click'); // Găsiți prima opțiune și faceți clic pe ea const firstOption =(');'.findst =('); firstOption.simulate('click'); // Verificați dacă opțiunea selectată este actualizată expect(wrapper.find('button').text()).toBe('Opțiune 1');

În acest test, deschidem mai întâi meniul derulant făcând clic pe butonul. Apoi găsim prima opțiune folosindprimulși simulați un clic pe el. În cele din urmă, verificăm dacă textul butonului a fost actualizat pentru a reflecta opțiunea selectată.

Testarea cu meniuri derulante mai complexe

În aplicațiile din lumea reală, meniurile derulante pot fi mult mai complexe decât exemplele noastre simple. Este posibil să aibă opțiuni imbricate, stil personalizat sau încărcare asincronă a datelor. Când testați aceste meniuri derulante mai complexe, va trebui să vă adaptați strategia de testare în consecință.

De exemplu, dacă meniul dvs. derulant are opțiuni imbricate, va trebui să testați comportamentul atât al opțiunilor părinte, cât și al celui copil. De asemenea, ar putea fi necesar să utilizați selectoare de enzime mai avansate pentru a găsi elemente specifice în meniul derulant.

Dacă meniul drop-down încarcă datele asincron, va trebui să utilizați tehnici precumasincron/așteaptăsausetTimeoutpentru a aștepta încărcarea datelor înainte de a rula testele. Iată un exemplu de testare a unui meniu derulant asincron:

import React, { useState, useEffect } din 'react'; const AsyncDropdown = () => { const [isOpen, setIsOpen] = useState(false); const [opțiuni, setOpțiuni] = 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}>Toggle Dropdown</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; export implicit AsyncDropdown;
import React din 'react'; import { superficial } din „enzimă”; importați AsyncDropdown din „./AsyncDropdown”; descrie('AsyncDropdown', () => { it('ar trebui să încarce opțiuni când se deschide meniul derulant', async () => { global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve(['Opțiunea 1', 'Opțiunea 2', 'Opțiunea 2', 'Opțiunea 3']), const}wrapper ]); shallow(<AsyncDropdown />); const button = wrapper.find('button'); // Deschide butonul dropdown ('click');

În acest test, folosimeste.fna batjocoriaduceAPI și returnați câteva date mostre. Apoi deschidem meniul derulant și așteptăm ca opțiunile să se încarce folosindașteaptă wrapper.update(). În cele din urmă, verificăm dacă este redat numărul corect de opțiuni.

Concluzie

Testarea meniurilor derulante din componentele React cu Enzyme este o parte esențială a asigurării calității și fiabilității aplicațiilor dvs. Urmând tehnicile prezentate în această postare pe blog, puteți scrie teste eficiente atât pentru meniurile derulante simple, cât și pentru cele complexe.

Dacă sunteți în căutarea unor produse Enzyme de înaltă calitate pentru nevoile dvs. de testare, suntem aici pentru a vă ajuta. De asemenea, oferim o gamă de alte produse, cum ar fiVitamina B12 Cas 13422-55-4 Pudră de metilcobalamină de calitate farmaceutică,Pulbere de nanografen la preț de fabrică, șiCapsula de ulei de krill.

Dacă sunteți interesat să achiziționați oricare dintre produsele noastre sau aveți întrebări, vă rugăm să nu ezitați să ne contactați pentru o discuție privind achizițiile. Suntem mereu bucuroși să ajutăm!

Krill Oil CapsuleFactory Price Nano Graphene Powder

Referințe

  • Documentația enzimei: https://enzymejs.github.io/enzyme/
  • Biblioteca de testare React: https://testing-library.com/docs/react-testing-library/intro/
Trimite anchetă