Att testa paginering i React-komponenter är en avgörande del för att säkerställa funktionaliteten och användarupplevelsen för dina webbapplikationer. Som enzymleverantör har jag sett hur viktigt det är att ha en pålitlig testprocess för sideringsfunktioner. I det här blogginlägget kommer jag att dela med mig av några tips och tricks om hur man testar paginering i React-komponenter med hjälp av Enzyme.
Förstå paginering i React
Innan vi dyker in i tester, låt oss snabbt gå igenom vad paginering är och hur det implementeras i React. Paginering är en teknik som används för att dela upp stora datamängder i mindre, mer lätthanterliga sidor. I en React-applikation implementeras paginering ofta med hjälp av tillstånd för att hålla reda på den aktuella sidan och antalet objekt per sida.
Här är ett enkelt exempel på en React-komponent med paginering:
importera React, { useState } från'react'; const PaginationComponent = ({ objekt }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 10; const indexOfLastItem = aktuell sida * itemsPerPage; const indexOfFirstItem = indexOfLastItem - itemsPerPage; const currentItems = items.slice(indexOfFirstItem, indexOfLastItem); const paginate = (pageNumber) => setCurrentPage(pageNumber); return ( <div> {currentItems.map((item) => ( <div key={item.id}>{item.name}</div> ))} {/* Pagineringsknappar */} <button onClick={() => paginera(currentPage - 1)} inaktiverad={currentPage === 1}> klicka på Föregående <(button onC paginate(currentPage + 1)} disabled={indexOfLastItem >= items.length}> Nästa </button> </div> ); }; exportera standardPagineringskomponent;
Ställa in enzym för testning
Enzyme är ett JavaScript-testverktyg för React som gör det lättare att hävda, manipulera och gå igenom dina React-komponenters utdata. För att komma igång med Enzyme måste du installera det tillsammans med dess adapter för din version av React.
npm install --save-dev enzym enzyme-adapter-react-16
Så här kan du ställa in Enzyme i din testfil:
importera enzym, { grunt } från 'enzym'; importera Adapter från 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() });
Testar pagineringsfunktionalitet
Nu när vi har ställt in vår komponent och enzym, låt oss börja testa sideringsfunktionaliteten.
Testar initial rendering
Det första vi vill testa är den initiala renderingen av komponenten. Vi kontrollerar om rätt antal artiklar visas på första sidan.
importera Reagera från'reagera'; importera PaginationComponent från './PaginationComponent'; importera enzym, { grunt } från 'enzym'; importera Adapter från 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() }); describe('PaginationComponent', () => { const items = Array.from({ length: 20 }, (_, i) => ({ id: i, namn: `Artikel ${i}` })); it('bör återge rätt antal objekt på första sidan', () => { const items{site}Component /<>mslow}(); expect(wrapper.find('div').length).toBe(10 + 2 // 10 objekt + 2 knappar });
Testar pagineringsknappar
Därefter kommer vi att testa sidnumreringsknapparna för att se till att de fungerar som förväntat. Vi klickar på knappen "Nästa" och kontrollerar om nästa uppsättning objekt visas.
it('ska visa nästa uppsättning objekt när du klickar på Nästa-knappen', () => { const wrapper = shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); // Kontrollera om tillståndet har uppdaterat expect.Pwra(to')currentstatage(wra); // Kontrollera om det korrekta antalet objekt visas expect(wrapper.find('div').length).toBe(10 + 2 });
Vi kan också testa knappen "Föregående" på liknande sätt:


it('ska visa den föregående uppsättningen objekt när man klickar på knappen Föregående', () => { const wrapper = shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); const prevButton ='wapper').(0); prevButton.simulate('click'); expect(wrapper.state('currentPage')).toBe(1);
Testar avaktiverade knappar
Vi bör också testa att sidnumreringsknapparna är inaktiverade när de borde vara det. Till exempel bör knappen "Föregående" vara inaktiverad på första sidan och knappen "Nästa" ska vara inaktiverad på sista sidan.
it('ska inaktivera knappen Föregående på första sidan', () => { const wrapper = grunt(<PaginationComponent items={items} />); const prevButton = wrapper.find('button').at(0); expect(prevButton.prop('disabled')).toBe(true); }); it('ska inaktivera Nästa-knappen på sista sidan', () => { const wrapper = shallow(<PaginationComponent items={items} />); // Navigera till sista sidan medan (wrapper.find('button').at(1).prop('disabled') === false) { wrapper.find('button');stmulate('button'); nextButton = wrapper.find('button').at(1); expect(nextButton.prop('inaktiverad')).
Avancerade testscenarier
Testa Edge Cases
Utöver den grundläggande funktionaliteten bör vi även testa några kantfodral. Vad händer till exempel om det inte finns några föremål eller om det är färre föremål än föremålen per sida?
it('ska hantera en tom lista med objekt', () => { const wrapper = grunt(<PaginationComponent items={[]} />); expect(wrapper.find('div').length).toBe(2); // Endast knapparna }); it('ska hantera en lista med objekt som är mindre än objekt per sida', () => { const smallItems = Array.from({ length: 5 }, (_, i) => ({ id: i, namn: `Artikel ${i}` })); const wrapper = grunt(<PaginationComponent items={smallItems}); expect(wrapper.find('div').length).toBe(5 + 2 });
Testa med olika artiklar per sida
Vi kan även testa komponenten med olika värden föritemsPerPage. Detta kan vara användbart om din applikation tillåter användaren att ändra antalet objekt som visas per sida.
it('ska visa rätt antal objekt med ett annat värde för itemsPerPage', () => { const CustomPaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; // Resten av komponentkoden... }; tom constapp} />); expect(wrapper.find('div').length).toBe(5 + 2 });
Slutsats
Att testa paginering i React-komponenter med Enzyme är ett viktigt steg för att säkerställa tillförlitligheten och funktionaliteten hos din applikation. Genom att följa tipsen och exemplen i det här blogginlägget kan du skriva omfattande tester för dina sideringsfunktioner.
Om du letar efter högkvalitativa enzymprodukter för dina testbehov finns vi här för att hjälpa dig. Vi erbjuder ett brett utbud av enzymlösningar, inklusiveIngefärsolja,Fabriksförsörjning organiskt torkat avokadopulver, ochGrossistpris Bulk 100 % vassleprotein. Kontakta oss för att diskutera dina krav och starta en upphandlingsförhandling.
Referenser
- Enzymdokumentation: https://enzymejs.github.io/enzyme/
- React Documentation: https://reactjs.org/docs/getting-started.html