Testowanie paginacji w komponentach React jest kluczową częścią zapewnienia funkcjonalności i doświadczenia użytkownika z aplikacjami internetowymi. Jako dostawca enzymów widziałem na własne oczy, jak ważny jest niezawodny proces testowania funkcji paginacji. W tym poście na blogu podzielę się wskazówkami i trikami dotyczącymi testowania paginacji w komponentach React przy użyciu Enzyme.
Zrozumienie paginacji w React
Zanim zagłębimy się w testowanie, przyjrzyjmy się szybko, czym jest paginacja i jak jest zaimplementowana w React. Paginacja to technika stosowana do dzielenia dużych zbiorów danych na mniejsze, łatwiejsze w zarządzaniu strony. W aplikacji React paginacja jest często implementowana przy użyciu stanu, aby śledzić bieżącą stronę i liczbę elementów na stronie.
Oto prosty przykład komponentu React z paginacją:
importuj reakcję, {useState } z'reaguj'; const PaginationComponent = ({ items }) => { const [bieżąca strona, setCurrentPage] = useState(1); stała liczba elementów na stronę = 10; const indeksOfLastItem = bieżąca strona * elementy na stronę; const indeksOfFirstItem = indeksOfLastItem - itemsPerPage; const currentItems = items.slice(indexOfFirstItem, IndexOfLastItem); const paginate = (pageNumber) => setCurrentPage(pageNumber); return ( <div> {currentItems.map((item) => ( <div key={item.id}>{item.name</div> ))} {/* Przyciski paginacji */ <button onClick={() => paginate(currentPage - 1)} wyłączone={currentPage === 1}> Poprzedni </button> <button onClick={() => paginate(currentPage + 1)} wyłączone={indexOfLastItem >= items.length}> Dalej </button> </div> ); }; eksportuj domyślny komponent paginacji;
Konfigurowanie enzymu do testowania
Enzyme to narzędzie do testowania JavaScript dla React, które ułatwia sprawdzanie, manipulowanie i przeglądanie danych wyjściowych komponentów React. Aby rozpocząć korzystanie z Enzyme, musisz zainstalować go wraz z adapterem dla Twojej wersji React.
npm install --save-dev enzym enzym-adapter-reaguj-16
Oto jak możesz skonfigurować Enzyme w pliku testowym:
importuj enzym, {płytkie} z „enzymu”; importuj adapter z „enzyme-adapter-react-16”; Enzyme.configure({adapter: nowy Adapter() });
Testowanie funkcjonalności paginacji
Teraz, gdy mamy już skonfigurowany komponent i enzym, zacznijmy testować funkcjonalność paginacji.
Testowanie wstępnego renderowania
Pierwszą rzeczą, którą chcemy przetestować, jest początkowy render komponentu. Sprawdzimy, czy na pierwszej stronie wyświetla się prawidłowa liczba pozycji.
import Reaguj z'reaguj'; zaimportuj komponent PaginationComponent z „./PaginationComponent”; importuj enzym, {płytkie} z „enzymu”; importuj adapter z „enzyme-adapter-react-16”; Enzyme.configure({adapter: nowy Adapter() }); opisz('PaginationComponent', () => { const items = Array.from({ długość: 20 }, (_, i) => ({ id: i, name: `Item ${i}` })); it('powinno wyświetlać poprawną liczbę elementów na pierwszej stronie', () => { const wrapper = shallow(<PaginationComponent items={items} />); oczekiwać(wrapper.find('div').length).toBe(10 + 2); // 10 elementów + 2 przyciski });
Testowanie przycisków paginacji
Następnie przetestujemy przyciski stronicowania, aby upewnić się, że działają zgodnie z oczekiwaniami. Klikamy przycisk „Dalej” i sprawdzamy, czy wyświetlił się następny zestaw elementów.
it('powinien wyświetlić następny zestaw elementów po kliknięciu przycisku Dalej', () => { const wrapper = shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); // Sprawdź, czy stan został zaktualizowany require(wrapper.state('currentPage')).toBe(2); // Sprawdź, czy jest poprawny liczba wyświetlanych elementów oczekuj(wrapper.find('div').length).toBe(10 + 2 });
W podobny sposób możemy również przetestować przycisk „Wstecz”:


it('powinien wyświetlić poprzedni zestaw elementów po kliknięciu przycisku Poprzedni', () => { 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('kliknij'); oczekiwaj(wrapper.state('bieżąca strona')).toBe(1); oczekiwaj(wrapper.find('div').length).toBe(10 + 2 });
Testowanie wyłączonych przycisków
Powinniśmy również sprawdzić, czy przyciski stronicowania są wyłączone, kiedy powinny. Przykładowo przycisk „Wstecz” powinien być wyłączony na pierwszej stronie, a przycisk „Dalej” na ostatniej stronie.
it('powinien wyłączyć przycisk Wstecz na pierwszej stronie', () => { const wrapper = shallow(<PaginationComponent items={items} />); const prevButton = wrapper.find('button').at(0); spodziewaj się(prevButton.prop('disabled')).toBe(true); }); it('powinien wyłączyć przycisk Dalej na ostatniej stronie', () => { const wrapper = shallow(<PaginationComponent items={items} />); // Przejdź do ostatniej strony while (wrapper.find('button').at(1).prop('disabled') === false) { wrapper.find('button').at(1).simulate('click'); } const nextButton = wrapper.find('przycisk').at(1); spodziewaj się(nextButton.prop('wyłączone')).toBe(true });
Zaawansowane scenariusze testowe
Testowanie przypadków Edge
Oprócz podstawowej funkcjonalności powinniśmy przetestować także kilka przypadków Edge. Na przykład, co się stanie, jeśli nie ma żadnych elementów lub jeśli jest ich mniej niż elementów na stronie?
it('powinien obsłużyć pustą listę elementów', () => { const wrapper = shallow(<PaginationComponent items={[]} />); spodziewaj się(wrapper.find('div').length).toBe(2); // Tylko przyciski }); it('powinien obsługiwać listę elementów mniejszych niż elementy na stronę', () => { const smallItems = Array.from({ długość: 5 }, (_, i) => ({ id: i, name: `Item ${i}` })); const wrapper = shallow(<PaginationComponent items={smallItems} />); oczekiwać(wrapper.find('div').length).toBe(5 + 2 });
Testowanie z różnymi elementami na stronę
Możemy również przetestować komponent z różnymi wartościami dlaelementy na stronę. Może to być przydatne, jeśli aplikacja umożliwia użytkownikowi zmianę liczby elementów wyświetlanych na stronie.
it('powinien wyświetlać poprawną liczbę elementów o różnej wartości itemsPerPage', () => { const CustomPaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; // Reszta kodu komponentu... }; const wrapper = shallow(<CustomPaginationComponent items={items} />); oczekiwaj(wrapper.find('div').długość).toBe(5 + 2 });
Wniosek
Testowanie paginacji w komponentach React za pomocą Enzyme to ważny krok w zapewnieniu niezawodności i funkcjonalności Twojej aplikacji. Postępując zgodnie ze wskazówkami i przykładami zawartymi w tym poście na blogu, możesz napisać kompleksowe testy funkcji paginacji.
Jeśli szukasz wysokiej jakości produktów enzymatycznych do swoich potrzeb testowych, jesteśmy tutaj, aby Ci pomóc. W naszej ofercie znajdziesz szeroką gamę roztworów enzymatycznych m.inOlejek imbirowy,Dostawa fabryczna Organiczny suszony proszek z awokado, ICena hurtowa luzem 100% białka serwatkowego. Skontaktuj się z nami, aby omówić swoje wymagania i rozpocząć negocjacje zakupowe.
Referencje
- Dokumentacja enzymu: https://enzymejs.github.io/enzyme/
- Dokumentacja React: https://reactjs.org/docs/getting-started.html