Testare l'impaginazione nei componenti React è una parte cruciale per garantire la funzionalità e l'esperienza utente delle tue applicazioni web. In qualità di fornitore di Enzyme, ho visto in prima persona quanto sia importante disporre di un processo di test affidabile per le funzionalità di impaginazione. In questo post del blog condividerò alcuni suggerimenti e trucchi su come testare l'impaginazione nei componenti React utilizzando Enzyme.
Comprendere l'impaginazione in React
Prima di immergerci nei test, esaminiamo rapidamente cos'è l'impaginazione e come viene implementata in React. L'impaginazione è una tecnica utilizzata per dividere set di dati di grandi dimensioni in pagine più piccole e più gestibili. In un'applicazione React, l'impaginazione viene spesso implementata utilizzando lo stato per tenere traccia della pagina corrente e del numero di elementi per pagina.
Ecco un semplice esempio di un componente React con impaginazione:
import React, { useState } from'react'; const PaginationComponent = ({ elementi }) => { const [currentPage, setCurrentPage] = useState(1); const elementiPerPagina = 10; const indiceOfLastItem = currentPage * itemsPerPage; const indiceOfPrimoItem = indiceOfUltimoItem - elementiPerPagina; const currentItems = items.slice(indexOfFirstItem, indexOfLastItem); const paginate = (numeropagina) => setCurrentPage(numeropagina); return ( <div> {currentItems.map((item) => ( <div key={item.id}>{item.name}</div> ))} {/* Pulsanti di impaginazione */} <button onClick={() => paginate(currentPage - 1)} disattivato={currentPage === 1}> Precedente </button> <button onClick={() => paginate(currentPage + 1)} disattivato={indexOfLastItem >= items.length}> Avanti </button> </div> ); }; esporta il PagetionComponent predefinito;
Impostazione dell'enzima per i test
Enzyme è un'utilità di test JavaScript per React che semplifica l'affermazione, la manipolazione e l'attraversamento dell'output dei componenti React. Per iniziare con Enzyme, dovrai installarlo insieme al suo adattatore per la tua versione di React.
npm install --save-dev enzima enzima-adattatore-react-16
Ecco come puoi impostare Enzyme nel tuo file di test:
importa Enzima, { superficiale } da 'enzima'; importa l'adattatore da 'enzyme-adapter-react-16'; Enzyme.configure({ adattatore: nuovo adattatore() });
Test della funzionalità di impaginazione
Ora che abbiamo configurato il nostro componente e Enzyme, iniziamo a testare la funzionalità di impaginazione.
Test del rendering iniziale
La prima cosa che vogliamo testare è il rendering iniziale del componente. Verificheremo se nella prima pagina viene visualizzato il numero corretto di elementi.
importa React da'react'; importa PaginationComponent da './PaginationComponent'; importa Enzima, { superficiale } da 'enzima'; importa l'adattatore da 'enzyme-adapter-react-16'; Enzyme.configure({ adattatore: nuovo adattatore() }); description('PaginationComponent', () => { const items = Array.from({ length: 20 }, (_, i) => ({ id: i, name: `Item ${i}` })); it('dovrebbe visualizzare il numero corretto di elementi nella prima pagina', () => { const wrapper = superficiale(<PaginationComponent items={items} />); wait(wrapper.find('div').length).toBe(10 + 2); // 10 elementi + 2 pulsanti } });
Test dei pulsanti di impaginazione
Successivamente, testeremo i pulsanti di impaginazione per assicurarci che funzionino come previsto. Faremo clic sul pulsante "Avanti" e controlleremo se viene visualizzato il successivo set di elementi.
it('dovrebbe visualizzare il successivo set di elementi quando si fa clic sul pulsante Successivo', () => { const wrapper = superficiale(<PagetionComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); // Controlla se lo stato è stato aggiornato wait(wrapper.state('currentPage')).toBe(2); // Controlla se viene visualizzato il numero corretto di elementi aspetta(wrapper.find('div').length).toBe(10 + 2 });
Possiamo anche testare il pulsante "Precedente" in modo simile:


it('dovrebbe visualizzare il set precedente di elementi quando si fa clic sul pulsante Precedente', () => { const wrapper = superficiale(<PagetionComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); const prevButton = wrapper.find('button').at(0); prevButton.simulate('click'); aspetta(wrapper.state('currentPage')).toBe(1); aspetta(wrapper.find('div').length).toBe(10 + 2 });
Test dei pulsanti disabilitati
Dovremmo anche verificare che i pulsanti di impaginazione siano disabilitati quando dovrebbero esserlo. Ad esempio, il pulsante "Precedente" dovrebbe essere disabilitato nella prima pagina e il pulsante "Avanti" dovrebbe essere disabilitato nell'ultima pagina.
it('dovrebbe disabilitare il pulsante Precedente sulla prima pagina', () => { const wrapper = superficiale(<PagetionComponent items={items} />); const prevButton = wrapper.find('button').at(0); wait(prevButton.prop('disabled')).toBe(true); }); it('dovrebbe disabilitare il pulsante Successivo sull'ultima pagina', () => { const wrapper = superficiale(<PaginationComponent items={items} />); // Passa all'ultima pagina while (wrapper.find('button').at(1).prop('disabled') === false) { wrapper.find('button').at(1).simulate('click'); } const nextButton = wrapper.find('pulsante').at(1); aspetta(nextButton.prop('disabilitato')).toBe(true });
Scenari di test avanzati
Test dei casi limite
Oltre alle funzionalità di base, dovremmo testare anche alcuni casi limite. Ad esempio, cosa succede se non sono presenti articoli o se sono presenti meno articoli di quelli per pagina?
it('dovrebbe gestire un elenco vuoto di elementi', () => { const wrapper = superficiale(<PaginationComponent items={[]} />); wait(wrapper.find('div').length).toBe(2); // Solo i pulsanti }); it('dovrebbe gestire un elenco di elementi più piccoli degli elementi per pagina', () => { const smallItems = Array.from({ length: 5 }, (_, i) => ({ id: i, name: `Item ${i}` })); const wrapper = superficiale(<PaginationComponent items={smallItems} />); wait(wrapper.find('div').length).toBe(5 + 2);});
Test con elementi diversi per pagina
Possiamo anche testare il componente con valori diversi perelementiPerPagina. Ciò può essere utile se l'applicazione consente all'utente di modificare il numero di elementi visualizzati per pagina.
it('dovrebbe visualizzare il numero corretto di elementi con un valore itemsPerPage diverso', () => { const CustomPaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; // Resto del codice del componente... }; const wrapper = superficiale(<CustomPaginationComponent items={items} />); aspetta(wrapper.find('div').length).toBe(5 + 2 });
Conclusione
Testare l'impaginazione nei componenti React con Enzyme è un passo importante per garantire l'affidabilità e la funzionalità della tua applicazione. Seguendo i suggerimenti e gli esempi contenuti in questo post del blog, puoi scrivere test completi per le funzionalità di impaginazione.
Se stai cercando prodotti enzimatici di alta qualità per le tue esigenze di test, siamo qui per aiutarti. Offriamo una vasta gamma di soluzioni enzimatiche, tra cuiOlio di zenzero,Polvere di avocado essiccata biologica fornita dalla fabbrica, EPrezzo all'ingrosso Proteine del siero di latte 100% sfuse. Contattaci per discutere le tue esigenze e avviare una trattativa di approvvigionamento.
Riferimenti
- Documentazione sugli enzimi: https://enzymejs.github.io/enzyme/
- Documentazione di React: https://reactjs.org/docs/getting-started.html