Testarea paginației în componentele React este o parte esențială a asigurării funcționalității și experienței utilizatorului aplicațiilor dvs. web. În calitate de furnizor de enzime, am văzut direct cât de important este să existe un proces de testare fiabil pentru caracteristicile de paginare. În această postare pe blog, voi împărtăși câteva sfaturi și trucuri despre cum să testați paginarea în componentele React folosind Enzyme.
Înțelegerea paginației în React
Înainte de a ne lansa în testare, să trecem rapid peste ce este paginarea și cum este implementată în React. Paginarea este o tehnică folosită pentru a împărți seturi mari de date în pagini mai mici, mai ușor de gestionat. Într-o aplicație React, paginarea este adesea implementată folosind stare pentru a ține evidența paginii curente și a numărului de articole pe pagină.
Iată un exemplu simplu de componentă React cu paginare:
import React, { useState } din 'react'; const PaginationComponent = ({ itemi }) => { const [currentPage, setCurrentPage] = useState(1); const itemiPerPage = 10; const indexOfLastItem = currentPage * itemsPerPage; const indexOfFirstItem = indexOfLastItem - itemsPerPage; const currentItems = itemi.slice(indexOfFirstItem, indexOfLastItem); const paginate = (pageNumber) => setCurrentPage(pageNumber); return ( <div> {currentItems.map((item) => ( <div key={item.id}>{item.name}</div> ))} {/* Butoane de paginare */} <button onClick={() => paginate(currentPage - 1)} disabled={currentPage === 1}> Buttonul de pe butonul <() Previous paginate(currentPage + 1)} disabled={indexOfLastItem >= items.length}> Next </button> </div> ); }; export implicit PaginationComponent;
Configurarea enzimei pentru testare
Enzyme este un utilitar de testare JavaScript pentru React, care facilitează afirmarea, manipularea și parcurgerea rezultatelor React Components. Pentru a începe să utilizați Enzyme, va trebui să îl instalați împreună cu adaptorul său pentru versiunea dvs. de React.
npm install --save-dev enzyme enzyme-adapter-react-16
Iată cum puteți configura Enzyme în fișierul dvs. de testare:
import Enzyme, { superficial } din „enzimă”; import Adapter de la „enzima-adapter-react-16”; Enzyme.configure({ adaptor: adaptor nou() });
Testarea funcționalității de paginare
Acum că avem componenta și Enzyme configurate, să începem să testăm funcționalitatea de paginare.
Testarea randării inițiale
Primul lucru pe care vrem să-l testăm este randarea inițială a componentei. Vom verifica dacă numărul corect de articole este afișat pe prima pagină.
import React from'react'; import PaginationComponent din './PaginationComponent'; import Enzyme, { superficial } din „enzimă”; import Adapter de la „enzima-adapter-react-16”; Enzyme.configure({ adaptor: adaptor nou() }); descrie('PaginationComponent', () => { const items = Array.from({ length: 20 }, (_, i) => ({ id: i, name: `Item ${i}` })); it('ar trebui să arate numărul corect de articole pe prima pagină', () => { const wrapper = low(<PaginationsComponent} articole /={); expect(wrapper.find('div').length).toBe(10 + 2 // 10 articole + 2 butoane });
Testarea butoanelor de paginare
În continuare, vom testa butoanele de paginare pentru a ne asigura că funcționează conform așteptărilor. Vom face clic pe butonul „Următorul” și vom verifica dacă următorul set de articole este afișat.
it('ar trebui să afișeze următorul set de articole atunci când se face clic pe butonul Următorul', () => { const wrapper = superficial (<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); // Verificați dacă starea s-a actualizat aștepta) );(wrapper. Verificați dacă sunt afișate numărul corect de articole expect(wrapper.find('div').length).toBe(10 + 2 });
De asemenea, putem testa butonul „Previous” într-un mod similar:


it('ar trebui să afișeze setul anterior de articole când se face clic pe butonul Previous', () => { const wrapper = superficial(<PaginationComponent item={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); const prevButton =('0button'.find).('wrapper'.find). prevButton.simulate('click'); expect(wrapper.state('currentPage')).toBe(1);
Testarea butoanelor dezactivate
De asemenea, ar trebui să testăm că butoanele de paginare sunt dezactivate atunci când ar trebui să fie. De exemplu, butonul „Previous” ar trebui să fie dezactivat pe prima pagină, iar butonul „Next” ar trebui să fie dezactivat pe ultima pagină.
it('ar trebui să dezactiveze butonul Previous de pe prima pagină', () => { const wrapper = superficial(<PaginationComponent items={items} />); const prevButton = wrapper.find('button').at(0); expect(prevButton.prop('disabled')).toBe(true);}); it('ar trebui să dezactiveze butonul Următorul de pe ultima pagină', () => { const wrapper = superficial(<PaginationComponent items={items} />); // Navigați la ultima pagină în timp ce (wrapper.find('button').at(1).prop('disabled') === false) { wrapper.find).('1);'late). nextButton = wrapper.find('button').at(1); expect(nextButton.prop('disabled')).toBe(true });
Scenarii avansate de testare
Testarea cazurilor Edge
Pe lângă funcționalitatea de bază, ar trebui să testăm și unele cazuri de margine. De exemplu, ce se întâmplă dacă nu există articole sau dacă există mai puține articole decât articolele pe pagină?
it('ar trebui să se ocupe de o listă goală de articole', () => { const wrapper = shallow(<PaginationComponent items={[]} />); expect(wrapper.find('div').length).toBe(2); // Numai butoanele }); it('ar trebui să gestioneze o listă de articole mai mici decât articolele pe pagină', () => { const smallItems = Array.from({ length: 5 }, (_, i) => ({ id: i, name: `Item ${i}` })); const wrapper = shallow(<PaginationComponent items={smallItems} />); expect(wrapper.find('div').length).toBe(5 + 2 });
Testarea cu diferite articole pe pagină
Putem testa și componenta cu valori diferite pentruitemPerPage. Acest lucru poate fi util dacă aplicația dvs. permite utilizatorului să modifice numărul de articole afișate pe pagină.
it('ar trebui să afișeze numărul corect de articole cu o valoare diferită itemPerPage', () => { const CustomPaginationComponent = ({ itemi }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; // Restul codului componentei... }; const wrapper = shallow(<CustomPagina) ; expect(wrapper.find('div').length).toBe(5 + 2 });
Concluzie
Testarea paginației în componentele React cu Enzyme este un pas important în asigurarea fiabilității și funcționalității aplicației dumneavoastră. Urmând sfaturile și exemplele din această postare pe blog, puteți scrie teste cuprinzătoare pentru caracteristicile dvs. de paginare.
Dacă sunteți în căutarea unor produse enzimatice de înaltă calitate pentru nevoile dvs. de testare, suntem aici pentru a vă ajuta. Oferim o gamă largă de soluții de enzime, inclusivUlei de ghimbir,Aprovizionare din fabrică Pudră organică de avocado uscat, șiPreț cu ridicata în vrac 100% proteine din zer. Contactați-ne pentru a discuta cerințele dvs. și pentru a începe o negociere de achiziție.
Referințe
- Documentația enzimei: https://enzymejs.github.io/enzyme/
- Documentația React: https://reactjs.org/docs/getting-started.html