تست صفحه بندی در اجزای React بخش مهمی برای اطمینان از عملکرد و تجربه کاربری برنامه های وب شما است. بهعنوان یک تامینکننده آنزیم، من از نزدیک متوجه شدهام که داشتن یک فرآیند تست قابل اعتماد برای ویژگیهای صفحهبندی چقدر مهم است. در این پست وبلاگ، نکات و ترفندهایی را در مورد نحوه آزمایش صفحه بندی در اجزای React با استفاده از Enzyme به اشتراک خواهم گذاشت.
آشنایی با صفحه بندی در React
قبل از اینکه وارد آزمایش شویم، اجازه دهید به سرعت به این موضوع بپردازیم که صفحه بندی چیست و چگونه در React پیاده سازی می شود. صفحه بندی تکنیکی است که برای تقسیم مجموعه داده های بزرگ به صفحات کوچکتر و قابل مدیریت تر استفاده می شود. در یک برنامه React، صفحه بندی اغلب با استفاده از وضعیت برای پیگیری صفحه جاری و تعداد موارد در هر صفحه اجرا می شود.
در اینجا یک مثال ساده از کامپوننت React با صفحه بندی آورده شده است:
وارد کردن React، { useState } از 'react'; const PaginationComponent = ({ مورد }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 10; const indexOfLastItem = currentPage * itemsPerPage; const indexOfFirstItem = indexOfLastItem - itemsPerPage; const currentItems = items.slice(indexOfFirstItem, indexOfLastItem); const paginate = (pageNumber) => setCurrentPage(pageNumber); بازگشت ( <div> {currentItems.map((item) => ( <div key={item.id}>{item.name}</div> ))} {/* دکمههای صفحهبندی */} <button onClick={() => صفحهبندی(currentPage - 1)} disabled={currentPage</but> == onClick={() => صفحه (currentPage + 1)} disabled={indexOfLastItem >= items.length}> بعدی </button> </div> ); }; صادرات پیش فرض PaginationComponent.
راه اندازی آنزیم برای آزمایش
Enzyme یک ابزار آزمایش جاوا اسکریپت برای React است که ادعا کردن، دستکاری و عبور از خروجی React Components را آسانتر میکند. برای شروع کار با Enzyme، باید آن را به همراه آداپتور آن برای نسخه React خود نصب کنید.
npm نصب --save-dev enzyme enzyme-adapter-react-16
در اینجا نحوه تنظیم Enzyme در فایل آزمایشی آمده است:
import Enzyme, { shallow } from 'enzyme'; واردات آداپتور از 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() });
تست عملکرد صفحه بندی
اکنون که مؤلفه و آنزیم خود را راهاندازی کردهایم، بیایید شروع به آزمایش عملکرد صفحهبندی کنیم.
تست رندر اولیه
اولین چیزی که می خواهیم تست کنیم رندر اولیه کامپوننت است. بررسی می کنیم که آیا تعداد صحیح موارد در صفحه اول نمایش داده می شود یا خیر.
import React from'react'; وارد کردن PaginationComponent از './PaginationComponent'; import Enzyme, { shallow } from 'enzyme'; واردات آداپتور از 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() }); describe('PaginationComponent', () => { const items = Array.from({ length: 20 }, (_, i) => ({ id: i, name: `Item ${i}` })); it('should render تعداد صحیح آیتم ها در صفحه اول', () => {const wrapper =Component}(<Pagination/Component}); expect(wrapper.find('div').length).toBe(10 + 2 دکمه });
تست دکمه های صفحه بندی
در مرحله بعد، دکمه های صفحه بندی را آزمایش می کنیم تا مطمئن شویم همانطور که انتظار می رود کار می کنند. ما روی دکمه "بعدی" کلیک می کنیم و بررسی می کنیم که آیا مجموعه بعدی آیتم ها نمایش داده می شوند یا خیر.
it('با کلیک روی دکمه بعدی باید مجموعه بعدی موارد را نمایش دهد'، () => { const wrapper = shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1)؛ nextButton.simulate('click'); // بررسی کنید که آیا وضعیت به روز شده است expect(wrapper.state ('currentPage')).
ما همچنین می توانیم دکمه "قبلی" را به روشی مشابه آزمایش کنیم:


it('با کلیک روی دکمه Previous باید مجموعه قبلی آیتم ها را نمایش دهد'، () => { const wrapper = shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1)؛ nextButton.simulate('click');('rat.Btton) const prev. prevButton.simulate('wrapper.state('currentPage')).
تست دکمه های غیرفعال
همچنین باید آزمایش کنیم که دکمه های صفحه بندی در زمانی که باید غیرفعال هستند. به عنوان مثال، دکمه "قبلی" در صفحه اول و دکمه "بعدی" باید در صفحه آخر غیرفعال باشد.
it('should disable the Previous button on the first page', () => { const wrapper = shallow(<PaginationComponent items={items} />); const prevButton = wrapper.find('button').at(0); expect(prevButton.prop('disabled'));toBet(t); it('should disable the Next button on the last page', () => { const wrapper = shallow(<PaginationComponent items={items} />); // به آخرین صفحه بروید while (wrapper.find('button').at(1).prop('disabled') === false) { wrapper.find('button').at(1).simulate('click') const nextButton = wrapper.find('button').at(1) expect(nextButton.prop('disabled'));
سناریوهای تست پیشرفته
موارد لبه تست
علاوه بر عملکرد اصلی، باید برخی از موارد لبه را نیز آزمایش کنیم. به عنوان مثال، اگر مواردی وجود نداشته باشد یا موارد کمتر از موارد در هر صفحه باشد، چه اتفاقی میافتد؟
it('should handle a list of items', () => { const wrapper = shallow(<PaginationComponent items={[]} />); expect(wrapper.find('div').length).toBe(2); // فقط دکمه ها }); it('should handle a list of items کوچکتر از آیتم ها در هر صفحه', () => { const smallItems = Array.from({ length: 5 }, (_, i) => ({ id: i, name: `Item ${i}` })); const wrapper = shallow(<PaginationComponent items={small); expect(wrapper.find('div').length).toBe(5 + 2));
تست با آیتم های مختلف در هر صفحه
ما همچنین می توانیم کامپوننت را با مقادیر مختلف برای تست کنیمآیتم ها در صفحه. این می تواند مفید باشد اگر برنامه شما به کاربر اجازه دهد تعداد موارد نمایش داده شده در هر صفحه را تغییر دهد.
it('باید تعداد صحیح آیتم ها را با مقدار آیتمPerPage متفاوت نمایش دهد'، () => {const CustomPaginationComponent = ({ آیتم ها }) => {const [currentPage, setCurrentPage] = useState(1)؛ const itemsPerPage = 5; // بقیه مولفه کد =PerPage... }; items={itms} /> expect(wrapper.find('div').length).toBe(5 + 2));
نتیجه گیری
تست صفحه بندی در اجزای React با Enzyme گام مهمی برای اطمینان از قابلیت اطمینان و عملکرد برنامه شما است. با رعایت نکات و مثال های موجود در این پست وبلاگ، می توانید تست های جامعی برای ویژگی های صفحه بندی خود بنویسید.
اگر به دنبال محصولات آنزیمی با کیفیت بالا برای نیازهای آزمایشی خود هستید، ما اینجا هستیم تا به شما کمک کنیم. ما طیف گسترده ای از محلول های آنزیمی از جملهروغن زنجبیل،کارخانه تامین پودر آووکادو خشک ارگانیک، وقیمت عمده 100% پروتئین آب پنیر فله. برای بحث در مورد نیازهای خود و شروع مذاکره خرید با ما تماس بگیرید.
مراجع
- مستندات آنزیم: https://enzymejs.github.io/enzyme/
- React Documentation: https://reactjs.org/docs/getting-started.html