Prérequis
JavaScript ES6+, React ou Vue.js, notions de test unitaire (AAA pattern).
Durée
2 jours
Contenu Technique de la Formation
Jest et Vitest sont les frameworks de test dominants en JavaScript moderne. Cette formation couvre le cycle complet : tests unitaires, tests de composants React, mocking avec jest.fn/vi.fn, spies, snapshot testing, et couverture de code avec Istanbul.
- Jest et Vitest — configuration, describe/it/expect, matchers, assertions avancées
- Mocking et spies — jest.fn(), vi.fn(), jest.mock(), vi.mock(), spyOn
- @testing-library/react et @testing-library/user-event — rendu de composants, user interactions
- Snapshot testing — génération, mise à jour, bonnes pratiques et pièges
- Coverage Istanbul et pytest-cov — rapports de couverture, seuils, exclusions
- happy-dom et jsdom — environnements de test, performance, différences
Objectifs de la Formation
Les objectifs visés par cette formation sont :
- Écrire des tests unitaires Jest/Vitest avec describe/it/expect et matchers spécialisés
- Mocker des modules, fonctions et APIs avec jest.fn/vi.fn et spyOn
- Tester des composants React avec @testing-library/react et simuler les interactions utilisateur
- Générer et maintenir des snapshots de manière stratégique sans sur-test
- Mesurer et améliorer la couverture de code avec Istanbul et afficher les rapports
- Choisir entre jest et Vitest selon le contexte (CRA vs Vite) et configurer l’environnement de test
Table des Matières
Jest et Vitest : configuration et fondamentaux
- Installation et configuration — jest.config.js vs vitest.config.ts, environments (node, jsdom)
- describe/it/expect et structure AAA — Arrange, Act, Assert pattern
- Matchers avancés — toEqual, toStrictEqual, toMatchObject, toThrow, toResolve
- Async/await et promises — expect().resolves, expect().rejects
- Setup et teardown — beforeEach, afterEach, beforeAll, afterAll
Mocking et spies
- jest.fn() et vi.fn() — création de mocks, assertions sur les appels
- jest.mock() et vi.mock() — mocking de modules, mocks hoisted
- jest.spyOn() et vi.spyOn() — espionnage de méthodes sans remplacer l’implémentation
- Mock implementations — mockReturnValue, mockImplementation, mockResolvedValue
- Mocking de fetch et axios — intercepteurs, timeouts, réponses d’erreur
Testing Library et tests de composants React
- @testing-library/react — render(), screen, getBy*/queryBy*/findBy*
- @testing-library/user-event — userEvent.click(), userEvent.type(), user interactions réalistes
- Queries et role-based selection — getByRole, getByLabelText, getByPlaceholderText
- Async testing — waitFor(), findBy* queries, suspense avec await
- Accessible testing — tester via les rôles ARIA, pas par CSS classes
Snapshot testing et couverture
- Snapshot testing — generateSnapshots, updateSnapshots, use cases appropriés
- Bonnes pratiques snapshots — petits snapshots ciblés, exclusion de données dynamiques
- Coverage Istanbul et rapports — statement, branch, function, line coverage
- Seuils de couverture (--coverage-threshold) — global, each, branches
- happy-dom vs jsdom — performance, compatibilité, sélection selon le contexte
En Pratique
Écrire des tests unitaires avec Jest et Vitest
- Configurer les frameworks et les fichiers de test
- Rédiger des assertions complètes et lisibles
Tester les composants React avec Testing Library
- Requêter les éléments DOM comme l'utilisateur le ferait
- Valider les interactions et les changements d'état
Utiliser les mocks, stubs et espions
- Isoler les dépendances externes et les appels API
- Vérifier les appels de fonction et les paramètres
Mesurer et améliorer la couverture de code
- Atteindre une couverture de 80%+ de façon pragmatique
- Identifier les cas limites et les branches non testées
Modalités et Inscription
Cette formation est proposée selon deux formules pour s'adapter au mieux à vos besoins :
Session régulière
Des sessions sont organisées à intervalles réguliers. Demandez les prochaines dates planifiées pour vous inscrire à la prochaine session.
Sur mesure & intra-entreprise
Vous souhaitez former vos équipes directement dans vos locaux ou adapter le programme technique à votre contexte d'entreprise ? Contactez-nous pour obtenir un devis personnalisé.