Comment tester la pagination dans les composants React avec Enzyme ?

Nov 11, 2025

Laisser un message

Dr Emily Carter
Dr Emily Carter
En tant que directeur de la recherche sur les aliments naturels d'Asclepius, je dirige notre équipe dans le développement de poudres d'extrait de plantes de pointe. Avec plus d'une décennie d'expérience en chimie des produits naturels, je suis passionné par la création de solutions innovantes qui exploitent le pouvoir de la nature.

Tester la pagination dans les composants React est un élément crucial pour garantir la fonctionnalité et l'expérience utilisateur de vos applications Web. En tant que fournisseur d'enzymes, j'ai pu constater à quel point il est important de disposer d'un processus de test fiable pour les fonctionnalités de pagination. Dans cet article de blog, je partagerai quelques trucs et astuces sur la façon de tester la pagination dans les composants React à l'aide d'Enzyme.

Comprendre la pagination dans React

Avant de nous lancer dans les tests, examinons rapidement ce qu'est la pagination et comment elle est implémentée dans React. La pagination est une technique utilisée pour diviser de grands ensembles de données en pages plus petites et plus faciles à gérer. Dans une application React, la pagination est souvent implémentée à l'aide de l'état pour suivre la page actuelle et le nombre d'éléments par page.

Voici un exemple simple de composant React avec pagination :

importer React, { useState } from'react' ; const PaginationComponent = ({ éléments }) => { const [currentPage, setCurrentPage] = useState(1); const élémentsParPage = 10 ; const indexOfLastItem = currentPage * 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> ))} {/* Boutons de pagination */} <button onClick={() => paginate(currentPage - 1)} désactivé={currentPage === 1}> Précédent </button> <button onClick={() => paginate(currentPage + 1)} désactivé={indexOfLastItem >= items.length}> Suivant </button> </div> ); } ; exporter le PaginationComponent par défaut ;

Configuration de l'enzyme pour les tests

Enzyme est un utilitaire de test JavaScript pour React qui facilite l'affirmation, la manipulation et le parcours de la sortie de vos composants React. Pour démarrer avec Enzyme, vous devrez l'installer avec son adaptateur pour votre version de React.

npm install --save-dev enzyme enzyme-adaptateur-react-16

Voici comment configurer Enzyme dans votre fichier de test :

importer Enzyme, { peu profond } depuis 'enzyme' ; importer l'adaptateur depuis « enzyme-adapter-react-16 » ; Enzyme.configure({ adaptateur : new Adapter() });

Test de la fonctionnalité de pagination

Maintenant que notre composant et Enzyme sont configurés, commençons à tester la fonctionnalité de pagination.

Test du rendu initial

La première chose que nous souhaitons tester est le rendu initial du composant. Nous vérifierons si le nombre correct d'éléments est affiché sur la première page.

importer React depuis « react » ; importer PaginationComponent depuis './PaginationComponent' ; importer Enzyme, { peu profond } depuis 'enzyme' ; importer l'adaptateur depuis « enzyme-adapter-react-16 » ; Enzyme.configure({ adaptateur : new Adapter() }); décrire('PaginationComponent', () => { const items = Array.from({ length: 20 }, (_, i) => ({ id: i, name: `Item ${i}` })); it('devrait afficher le nombre correct d'éléments sur la première page', () => { const wrapper =shallow(<PaginationComponent items={items} />); expect(wrapper.find('div').length).toBe(10 + 2); // 10 éléments + 2 boutons } });

Test des boutons de pagination

Ensuite, nous testerons les boutons de pagination pour nous assurer qu’ils fonctionnent comme prévu. Nous allons cliquer sur le bouton "Suivant" et vérifier si l'ensemble d'éléments suivant est affiché.

it('doit afficher l'ensemble d'éléments suivant lorsque vous cliquez sur le bouton Suivant', () => { const wrapper = Shallow(<PaginationComponent items={items} />); const nextButton = wrapper.find('button').at(1); nextButton.simulate('click'); // Vérifiez si l'état a été mis à jour expect(wrapper.state('currentPage')).toBe(2); // Vérifiez si le nombre correct d'éléments est affiché attendre(wrapper.find('div').length).toBe(10 + 2 });

On peut également tester le bouton « Précédent » de manière similaire :

Factory Supply Organic Dried Avocado PowderGinger Oil

it('devrait afficher l'ensemble d'éléments précédent lorsque vous cliquez sur le bouton Précédent', () => { 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'); attendre(wrapper.state('currentPage')).toBe(1); attendre(wrapper.find('div').length).toBe(10 + 2 });

Test des boutons désactivés

Nous devrions également tester que les boutons de pagination sont désactivés alors qu'ils devraient l'être. Par exemple, le bouton « Précédent » doit être désactivé sur la première page et le bouton « Suivant » doit être désactivé sur la dernière page.

it('devrait désactiver le bouton Précédent sur la première page', () => { const wrapper = Shallow(<PaginationComponent items={items} />); const prevButton = wrapper.find('button').at(0); expect(prevButton.prop('disabled')).toBe(true); }); it('devrait désactiver le bouton Suivant sur la dernière page', () => { const wrapper = Shallow(<PaginationComponent items={items} />); // Accédez à la dernière page 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')).toBe(true });

Scénarios de tests avancés

Test des cas extrêmes

En plus des fonctionnalités de base, nous devrions également tester certains cas extrêmes. Par exemple, que se passe-t-il s’il n’y a aucun élément ou s’il y a moins d’éléments que le nombre d’éléments par page ?

it('devrait gérer une liste vide d'éléments', () => { const wrapper = Shallow(<PaginationComponent items={[]} />); expect(wrapper.find('div').length).toBe(2); // Uniquement les boutons }); it('doit gérer une liste d'éléments plus petits que les éléments par page', () => { 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); });

Test avec différents éléments par page

Nous pouvons également tester le composant avec différentes valeurs pouréléments par page. Cela peut être utile si votre application permet à l'utilisateur de modifier le nombre d'éléments affichés par page.

it('doit afficher le nombre correct d'éléments avec une valeur itemsPerPage différente', () => { const CustomPaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; // Reste du code du composant... }; const wrapper = Shallow(<CustomPaginationComponent items={items} />); attendre(wrapper.find('div').length).toBe(5 + 2 });

Conclusion

Tester la pagination dans les composants React avec Enzyme est une étape importante pour garantir la fiabilité et la fonctionnalité de votre application. En suivant les conseils et les exemples de cet article de blog, vous pouvez rédiger des tests complets pour vos fonctionnalités de pagination.

Si vous recherchez des produits enzymatiques de haute qualité pour vos besoins en matière de tests, nous sommes là pour vous aider. Nous proposons une large gamme de solutions enzymatiques, notammentHuile de Gingembre,Poudre d'avocat séchée biologique d'approvisionnement d'usine, etPrix ​​de gros en vrac 100 % protéine de lactosérum. Contactez-nous pour discuter de vos besoins et entamer une négociation d’approvisionnement.

Références

  • Documentation sur les enzymes : https://enzymejs.github.io/enzyme/
  • Documentation React : https://reactjs.org/docs/getting-started.html
Envoyez demande