Come testare i menu a discesa nei componenti React con Enzyme?

Nov 07, 2025

Lasciate un messaggio

Chris Evans
Chris Evans
Health Food Blogger e Ambasciatore del marchio Asclepius. Condivido suggerimenti sull'incorporazione degli estratti di piante nelle routine di benessere quotidiano e rivedo gli ultimi prodotti nel settore alimentare sanitario.

Ciao a tutti, colleghi sviluppatori di React! Oggi parlerò di come testare i menu a discesa nei componenti React con Enzyme. In qualità di fornitore di enzimi, ho visto in prima persona l'importanza di test adeguati nei progetti React, soprattutto quando si tratta di quei fastidiosi menu a discesa.

Perché testare i menu a discesa è importante

I menu a discesa sono un componente dell'interfaccia utente comune nelle applicazioni React. Vengono utilizzati per operazioni come la selezione di opzioni, il filtraggio dei dati e la navigazione nei menu. Ma possono anche essere difficili da ottenere. Un piccolo bug in un menu a discesa può portare a un'esperienza utente insoddisfacente, ad esempio le opzioni non vengono visualizzate correttamente o il menu a discesa non si chiude quando dovrebbe.

È qui che entra in gioco il testing. Scrivendo test per i tuoi menu a discesa, puoi individuare questi bug nelle prime fasi del processo di sviluppo, prima che arrivino alla produzione. Ed Enzyme è un ottimo strumento per fare proprio questo.

Iniziare con l'enzima

Prima di immergerci nei menu a discesa dei test, esaminiamo rapidamente come impostare Enzyme nel tuo progetto React. Se non l'hai già fatto, dovrai installare Enzyme e il suo adattatore per React. Puoi farlo usando npm o filato:

npm install --save-dev enzima enzima-adattatore-react-16

Una volta installato Enzyme, dovrai configurarlo per funzionare con la tua versione di React. Nel file di configurazione del test (solitamentesrc/setupTests.js), aggiungere il seguente codice:

importa l'enzima da 'enzima'; importa l'adattatore da 'enzyme-adapter-react-16'; Enzyme.configure({ adattatore: nuovo adattatore() });

Ora sei pronto per iniziare il test!

Testare un semplice menu a discesa

Iniziamo testando un semplice componente a discesa. Ecco un esempio di un menu a discesa di base in React:

importa React, { useState } da 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); opzioni const = ['Opzione 1', 'Opzione 2', 'Opzione 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Attiva/disattiva menu a discesa</button> {isOpen && ( <ul> {options.map((opzione, indice) => ( <li key={index}>{opzione}</li> ))} </ul> )} </div> ); }; menu a discesa predefinito per l'esportazione;

Per testare questo menu a discesa, dovremo assicurarci che facendo clic sul pulsante si attivi/disattivi la visibilità dell'elenco delle opzioni. Ecco come possiamo farlo utilizzando Enzyme:

importa React da 'react'; import { superficiale } da 'enzima'; importa il menu a discesa da './Dropdown'; description('Dropdown', () => { it('dovrebbe attivare/disattivare il menu a discesa quando si fa clic sul pulsante', () => { const wrapper = superficiale(<Dropdown />); const button = wrapper.find('button'); // Inizialmente, il menu a discesa dovrebbe essere chiuso wait(wrapper.find('ul').exists()).toBe(false); // Fare clic sul pulsante per aprire il menu a discesa button.simulate('click'); wait(wrapper.find('ul').exists()).toBe(true); // Fai nuovamente clic sul pulsante per chiudere il menu a discesa button.simulate('click'); wait(wrapper.find('ul').exists()).

In questo test, utilizziamo per primopoco profondoper rendere ilCadere in picchiatacomponente. Quindi troviamo il pulsante utilizzandoTrovaree simulare un evento clic utilizzandosimulare. Infine, usiamoesisteper verificare se l'elenco delle opzioni è visibile o meno.

Test della selezione a discesa

Ora facciamo un ulteriore passo avanti e testiamo la selezione di un'opzione nel menu a discesa. Modificheremo il nostroCadere in picchiatacomponente per gestire la selezione delle opzioni:

importa React, { useState } da 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const [selectedOption, setSelectedOption] = useState(null); opzioni const = ['Opzione 1', 'Opzione 2', 'Opzione 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; const selectOption = (opzione) => { setSelectedOption(opzione); setIsOpen(falso); }; return ( <div> <button onClick={toggleDropdown}> {selectedOption ?selectedOption : 'Seleziona un'opzione'} </button> {isOpen && ( <ul> {options.map((opzione, indice) => ( <li key={index} onClick={() => selectOption(opzione)}> {opzione} </li> ))} </ul> )} </div> ); }; menu a discesa predefinito per l'esportazione;

Per testare la selezione dell'opzione, dovremo simulare un clic su una delle opzioni e verificare se l'opzione selezionata viene aggiornata correttamente. Ecco la prova:

importa React da 'react'; import { superficiale } da 'enzima'; importa il menu a discesa da './Dropdown'; description('Dropdown', () => { it('dovrebbe selezionare un'opzione quando si fa clic', () => { const wrapper = superficiale(<Dropdown />); const button = wrapper.find('button'); // Apre il menu a discesa button.simulate('click'); // Trova la prima opzione e fai clic su di essa const firstOption = wrapper.find('li').first(); firstOption.simulate('click'); // Controlla se l'opzione selezionata viene aggiornata wait(wrapper.find('button').text()).toBe('Option 1');

In questo test, apriamo innanzitutto il menu a discesa facendo clic sul pulsante. Quindi troviamo la prima opzione utilizzandoPrimoe simulare un clic su di esso. Infine, controlliamo se il testo del pulsante è stato aggiornato per riflettere l'opzione selezionata.

Test con menu a discesa più complessi

Nelle applicazioni del mondo reale, i menu a discesa possono essere molto più complessi dei nostri semplici esempi. Potrebbero avere opzioni nidificate, stili personalizzati o caricamento dati asincrono. Quando testi questi menu a discesa più complessi, dovrai adattare di conseguenza la tua strategia di test.

Ad esempio, se il tuo menu a discesa ha opzioni nidificate, dovrai testare il comportamento di entrambe le opzioni genitore e figlio. Potrebbe anche essere necessario utilizzare selettori di enzimi più avanzati per trovare elementi specifici nel menu a discesa.

Se il tuo menu a discesa carica i dati in modo asincrono, dovrai utilizzare tecniche comeasincrono/attendoOsetTimeoutattendere il caricamento dei dati prima di eseguire i test. Ecco un esempio di test di un menu a discesa asincrono:

importa React, { useState, useEffect } da 'react'; const AsyncDropdown = () => { const [isOpen, setIsOpen] = useState(false); const [opzioni, setOptions] = useState([]); useEffect(() => { const fetchOptions = async () => { const risposta = attendono fetch('https://api.example.com/options'); const data = attendono risposta.json(); setOptions(data); }; if (isOpen) { fetchOptions(); } }, [isOpen]); const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Attiva/disattiva menu a discesa</button> {isOpen && ( <ul> {options.map((opzione, indice) => ( <li key={index}>{opzione}</li> ))} </ul> )} </div> ); }; esporta AsyncDropdown predefinito;
importa React da 'react'; import { superficiale } da 'enzima'; importa AsyncDropdown da './AsyncDropdown'; description('AsyncDropdown', () => { it('dovrebbero caricare le opzioni quando il menu a discesa è aperto', async () => { global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve(['Opzione 1', 'Opzione 2', 'Opzione 3']), }) ); const wrapper = superficiale(<AsyncDropdown />); const button = wrapper.find('button'); // Apre il menu a discesa button.simulate('click'); // Attende il caricamento delle opzioni wait wrapper.update( // Controlla se le opzioni sono caricate wait(wrapper.find('li').length).toBe(3);

In questo test utilizziamois.fnper deridere ilandare a prendereAPI e restituire alcuni dati di esempio. Quindi apriamo il menu a discesa e aspettiamo che le opzioni vengano caricate utilizzandoattendi wrapper.update(). Infine, controlliamo se viene visualizzato il numero corretto di opzioni.

Conclusione

Testare i menu a discesa nei componenti React con Enzyme è una parte essenziale per garantire la qualità e l'affidabilità delle tue applicazioni. Seguendo le tecniche descritte in questo post del blog, puoi scrivere test efficaci sia per i menu a discesa semplici che per quelli complessi.

Se stai cercando prodotti Enzyme di alta qualità per le tue esigenze di test, siamo qui per aiutarti. Offriamo anche una gamma di altri prodotti, comePolvere di metilcobalamina della vitamina B12 Cas 13422-55-4 di grado farmaceutico,Polvere di nano grafene a prezzo di fabbrica, ECapsula di olio di krill.

Se sei interessato all'acquisto di uno qualsiasi dei nostri prodotti o hai domande, non esitare a contattarci per una discussione sull'approvvigionamento. Siamo sempre felici di aiutarti!

Krill Oil CapsuleFactory Price Nano Graphene Powder

Riferimenti

  • Documentazione sugli enzimi: https://enzymejs.github.io/enzyme/
  • Libreria di test di React: https://testing-library.com/docs/react-testing-library/intro/
Invia la tua richiesta