Как да тествам страниране в React компоненти с Enzyme?

Nov 11, 2025

Остави съобщение

Д -р Емили Картър
Д -р Емили Картър
Като директор на изследванията за здравословна храна в Asclepius, аз ръководя нашия екип в разработването на авангардни растителни екстрактни прахове. С повече от десетилетие опит в химията на природни продукти, аз съм страстен да създавам иновативни решения, които използват силата на природата.

Тестването на пагинацията в компонентите на React е важна част от осигуряването на функционалността и потребителското изживяване на вашите уеб приложения. Като доставчик на Enzyme видях от първа ръка колко е важно да има надежден процес на тестване на функциите за страниране. В тази публикация в блога ще споделя някои съвети и трикове за това как да тествате страниране в React компоненти с помощта на Enzyme.

Разбиране на пагинацията в React

Преди да се потопим в тестването, нека набързо да разгледаме какво е пагинация и как е имплементирана в React. Странирането е техника, използвана за разделяне на големи набори от данни на по-малки, по-лесно управляеми страници. В приложение на React странирането често се прилага с помощта на състояние, за да се следи текущата страница и броя на елементите на страница.

Ето един прост пример за React компонент с пагинация:

import React, {useState} from'react'; const PaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 10; const indexOfLastItem = currentPage * itemsPerPage; const indexOfFirstItem = indexOfLastItem - itemsPerPage; const currentItems = items.slice(indexOfFirstItem, indexOfLastItem); const paginate = (номер на страница) => setCurrentPage(номер на страница); return ( <div> {currentItems.map((item) => ( <div key={item.id}>{item.name}</div> ))} {/* Бутони за страниране */} <button onClick={() => paginate(currentPage - 1)} disabled={currentPage === 1}> Предишна </button> <button onClick={() => paginate(currentPage + 1)} disabled={indexOfLastItem >= items.length}> Следващ </button> </div> ); }; експортиране по подразбиране PaginationComponent;

Настройване на ензима за тестване

Enzyme е помощна програма за тестване на JavaScript за React, която улеснява заявяването, манипулирането и преминаването на изхода на вашите компоненти на React. За да започнете с Enzyme, ще трябва да го инсталирате заедно с неговия адаптер за вашата версия на React.

npm install --save-dev ензим enzyme-adapter-react-16

Ето как можете да настроите Enzyme във вашия тестов файл:

импортиране на ензим, { плитък } от 'ензим'; импортиране на адаптер от 'enzyme-adapter-react-16'; Enzyme.configure({ адаптер: нов адаптер() });

Тестване на функционалността за страниране

Сега, след като сме настроили нашия компонент и Enzyme, нека започнем да тестваме функционалността за страниране.

Тестване на първоначалното изобразяване

Първото нещо, което искаме да тестваме, е първоначалното изобразяване на компонента. Ще проверим дали правилният брой артикули са показани на първата страница.

импортиране на React от 'react'; импортиране на PaginationComponent от './PaginationComponent'; импортиране на ензим, { плитък } от 'ензим'; импортиране на адаптер от 'enzyme-adapter-react-16'; Enzyme.configure({ адаптер: нов адаптер() }); describe('PaginationComponent', () => { const items = Array.from({ length: 20 }, (_, i) => ({ id: i, name: `Item ${i}` })); it('трябва да визуализира правилния брой елементи на първата страница', () => { const wrapper = shallow(<PaginationComponent items={items} />); expect(wrapper.find('div').length(10 + 2); // 10 елемента + 2 бутона });

Тестване на бутони за страниране

След това ще тестваме бутоните за страниране, за да сме сигурни, че работят според очакванията. Ще щракнем върху бутона „Напред“ и ще проверим дали се показва следващият набор от елементи.

it('трябва да покаже следващия набор от елементи, когато се щракне върху бутона Напред', () => { const wrapper = shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); // Проверете дали състоянието е актуализирано expect(wrapper.state('currentPage')).toBe(2); // Проверете дали са показани правилният брой елементи expect(wrapper.find('div').length).toBe(10 + 2);

Можем също да тестваме бутона "Назад" по подобен начин:

Factory Supply Organic Dried Avocado PowderGinger Oil

it('трябва да показва предишния набор от елементи, когато се щракне върху бутона Предишен', () => { const wrapper = shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); const prevButton = wrapper.find('button').at(0); prevButton.simulate('click');expect(wrapper.state('currentPage')).toBe(1);expect(wrapper.find('div').length(10 + 2));

Тестване на деактивирани бутони

Трябва също да тестваме дали бутоните за страниране са деактивирани, когато трябва. Например, бутонът „Предишна“ трябва да бъде деактивиран на първата страница, а бутонът „Напред“ трябва да бъде деактивиран на последната страница.

it('трябва да деактивира бутона Предишна на първата страница', () => { const wrapper = shallow(<PaginationComponent items={items} />); const prevButton = wrapper.find('button').at(0); expect(prevButton.prop('disabled')).toBe(true); }); it('трябва да деактивира бутона Next на последната страница', () => { const wrapper = shallow(<PaginationComponent items={items} />); // Придвижете се до последната страница, докато (wrapper.find('button').at(1).prop('disabled') === false) { wrapper.find('button').at(1).simulate('click'); } const nextButton = wrapper.find('button').at(1); очаквай(nextButton.prop('disabled')).toBe(true});

Разширени сценарии за тестване

Тестване на Edge Cases

В допълнение към основната функционалност трябва да тестваме и някои крайни случаи. Например, какво се случва, ако няма елементи или ако има по-малко елементи от елементите на страница?

it('трябва да обработва празен списък с елементи', () => { const wrapper = shallow(<PaginationComponent items={[]} />); expect(wrapper.find('div').length).toBe(2); // Само бутоните }); it('трябва да обработва списък с елементи, по-малки от елементи на страница', () => { const smallItems = Array.from({ length: 5 }, (_, i) => ({ id: i, name: `Item ${i}` })); const wrapper = shallow(<PaginationComponent items={smallItems} />); очаквам (wrapper.find('div').length).toBe(5 + 2);

Тестване с различни елементи на страница

Можем също да тестваме компонента с различни стойности заелементи на страница. Това може да бъде полезно, ако вашето приложение позволява на потребителя да променя броя на елементите, показвани на страница.

it('трябва да показва правилния брой елементи с различна стойност itemsPerPage', () => { const CustomPaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; // Останалата част от кода на компонента... }; const wrapper = shallow(<CustomPaginationComponent items={items} />); очаквам (wrapper.find('div').length).toBe(5 + 2);

Заключение

Тестването на пагинация в компонентите на React с Enzyme е важна стъпка за гарантиране на надеждността и функционалността на вашето приложение. Като следвате съветите и примерите в тази публикация в блога, можете да напишете изчерпателни тестове за вашите функции за пагинация.

Ако търсите висококачествени ензимни продукти за вашите нужди от тестване, ние сме тук, за да ви помогнем. Ние предлагаме широка гама от ензимни разтвори, включителноДжинджифилово масло,Органично изсушено авокадо на прах от фабрична доставка, иЦена на едро Насипен 100% суроватъчен протеин. Свържете се с нас, за да обсъдим вашите изисквания и да започнем преговори за поръчка.

Референции

  • Документация за ензима: https://enzymejs.github.io/enzyme/
  • Документация на React: https://reactjs.org/docs/getting-started.html
Изпрати запитване