Tests automatisés en JavaScript : du premier assert à la CI
Tests automatisés est un cours de niveau intermédiaire de 5 leçons (environ 2 h 54), avec 15 exercices et 15 questions de quiz. Prérequis : Structures de données et complexité. Les exercices s'exécutent dans le navigateur, sans installation.
- Back-end
- Intermédiaire
- 5 leçons
- 2 h 54
- 15 exercices
- Exercices exécutés dans le navigateur
Le cours en bref
Ce cours vous apprend à sécuriser votre code par des tests automatisés. Vous commencerez par les assertions de node:assert et le runner intégré node:test, puis vous testerez du code asynchrone avec des doublures, pratiquerez le TDD, découvrirez Jest et Vitest, et terminerez par les tests d'intégration, la couverture et l'intégration continue.
Ce que tu sauras faire
- Écrire des assertions correctes avec node:assert et choisir des cas de test pertinents
- Organiser une suite de tests lisible et indépendante avec node:test
- Tester du code asynchrone et isoler les dépendances avec des stubs, espions et fakes
- Appliquer le cycle TDD et utiliser l'API expect de Jest et Vitest
- Tester des middlewares et des routes HTTP, interpréter la couverture et configurer une CI
Programme des 5 leçons
- Expliquer ce qu'apporte un test automatisé et situer les niveaux de la pyramide des tests
- Écrire des assertions avec node:assert (strictEqual, deepStrictEqual, throws)
- Choisir des cas de test pertinents, y compris les cas limites
- 02
Le test runner de Node : organiser ses tests
- Écrire et lancer des tests avec node:test et node --test
- Structurer un test selon le schéma Arrange-Act-Assert
- Garder des tests indépendants grâce aux hooks beforeEach/afterEach
- 03
Tests asynchrones et doublures (mocks, stubs, espions)
- Tester des fonctions asynchrones avec async/await et assert.rejects
- Remplacer une dépendance par une doublure (stub, espion, fake)
- Rendre le code testable grâce à l'injection de dépendances
- 04
TDD et frameworks de test : Jest et Vitest
- Appliquer le cycle TDD rouge-vert-refactor sur une petite fonctionnalité
- Lire et écrire des tests avec l'API expect de Jest et Vitest
- Choisir entre node:test, Jest et Vitest selon le projet
- 05
Tests d'intégration, couverture et intégration continue
- Tester un middleware ou une route HTTP avec des objets factices et par requêtes réelles
- Interpréter un rapport de couverture de code
- Automatiser les tests dans un pipeline d'intégration continue
Projet final
Couvrir de tests une API de gestion de tâches
Vous recevez une petite API Node.js (création, liste, modification et suppression de tâches, avec authentification par clé API) sans aucun test. Écrivez une suite complète : tests unitaires des fonctions de validation et des middlewares, tests de services avec doublures, tests d'intégration HTTP de chaque route, puis configurez la couverture et un workflow de CI. Un bug de régression vous est signalé : corrigez-le en TDD.
Livrables
- Les fichiers de tests (node:test ou Vitest) organisés par module
- Un test de non-régression écrit avant la correction du bug signalé
- Le rapport de couverture et une courte analyse des zones non couvertes
- Un fichier de workflow CI qui exécute les tests à chaque push
Critères d'évaluation
- Les tests passent, sont indépendants et déterministes
- Les cas nominaux, limites et d'erreur sont couverts pour chaque route
- Les doublures sont utilisées à bon escient (frontières externes uniquement)
- Les noms de tests décrivent clairement les comportements
- La CI échoue bien lorsqu'un test est cassé volontairement
Questions fréquentes
Faut-il connaître Jest pour suivre ce cours ?
Non. Le cours commence avec les outils intégrés à Node.js (node:assert et node:test), puis présente Jest et Vitest, dont l'API est très proche.
Quelle différence entre test unitaire et test d'intégration ?
Un test unitaire vérifie une fonction isolée, en remplaçant ses dépendances. Un test d'intégration vérifie que plusieurs parties fonctionnent ensemble, par exemple une route HTTP avec sa base de données.
Jest ou Vitest : lequel choisir ?
Vitest est souvent préféré pour les projets Vite, ESM et TypeScript ; Jest reste très présent dans les projets existants. Les concepts sont identiques et le cours compare les deux.
Le TDD est-il obligatoire ?
Non, mais c'est une méthode efficace pour clarifier une règle métier ou corriger un bug. Le cours vous la fait pratiquer sur des exemples courts.
Ce cours, raconté pour ton métier
Dis ce que tu veux savoir faire : « Tests automatisés » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.