Qu'est-ce que Jest et pourquoi en a-t-on besoin ?
\n\nJest est un framework de test puissant et populaire pour le code JavaScript, développé par Facebook (Meta). Il fournit tout le nécessaire pour écrire des tests unitaires, d'intégration et de bout en bout « prêts à l'emploi » : des outils pour créer des assertions, du mocking, des espions (spies), des temporisateurs, ainsi qu'un outil intégré pour mesurer la couverture de code (code coverage).
\n\nJest est largement utilisé dans l'écosystème React, mais il convient parfaitement pour tester tout code JavaScript, y compris les applications sur Node.js, Angular, Vue.js et d'autres frameworks.
\n\nPourquoi Jest est-il nécessaire ?
\n- \n
- Automatisation des vérifications : Permet de vérifier rapidement et de manière fiable que votre code fonctionne correctement après chaque modification. \n
- Prévention des régressions : Les tests aident à s'assurer que le nouveau code n'a pas cassé les fonctionnalités existantes. \n
- Documentation : Des tests bien écrits servent de documentation vivante, montrant comment chaque fonction ou module doit fonctionner. \n
- Confiance dans le refactoring : La présence de tests permet de réécrire et d'améliorer le code en toute sécurité. \n
- Simplicité de configuration : Jest fonctionne « prêt à l'emploi » sans nécessiter de configuration complexe. \n
Installation de Jest
\n\nJest s'installe via le gestionnaire de paquets npm ou yarn. Pour un projet Node.js, c'est la méthode standard.
# Installation en tant que dépendance de développement (recommandé)\nnpm install --save-dev jest\n\n# Ou avec yarn\nyarn add --dev jest\n\n\nAprès l'installation, ajoutez un script pour lancer les tests dans votre package.json :
{\n "scripts": {\n "test": "jest",\n "test:watch": "jest --watch", // Lancement en mode surveillance\n "test:coverage": "jest --coverage" // Lancement avec rapport de couverture\n }\n}\n\n\nVous pouvez maintenant exécuter les tests avec la commande npm test.
Démarrage rapide avec un exemple de code
\n\nSupposons que nous ayons un module simple pour les opérations mathématiques math.js :
// math.js\nfunction add(a, b) {\n return a + b;\n}\n\nfunction subtract(a, b) {\n return a - b;\n}\n\nmodule.exports = { add, subtract };\n\n\nCréons un fichier de test math.test.js (Jest recherche par défaut les fichiers avec l'extension .test.js ou .spec.js) :
// math.test.js\nconst { add, subtract } = require('./math');\n\ntest('adds 1 + 2 to equal 3', () => {\n expect(add(1, 2)).toBe(3);\n});\n\ntest('subtracts 5 - 3 to equal 2', () => {\n expect(subtract(5, 3)).toBe(2);\n});\n\n\nLancez les tests :
\n\nnpm test\n\nVous verrez dans la console un rapport sur le déroulement des tests. Si tout est correct, les deux tests seront marqués en vert ✓.
Méthodes et fonctions principales de Jest
\n\nJest fournit une API riche. Examinons 10 méthodes clés qui couvriront 90 % de vos tâches.
\n\n1. test(name, fn, timeout) / it(name, fn, timeout)
\nCe qu'elle fait : Définit un nouveau test. test et it sont des synonymes. Vous pouvez utiliser l'un ou l'autre.
Paramètres :
\n- \n
name(string) — le nom du test, qui sera affiché dans le rapport. \n fn(function) — la fonction contenant la logique du test (assertions). \n timeout(number, optionnel) — le délai d'attente du test en millisecondes (par défaut 5000). \n
Exemple :
\ntest('deux plus deux égalent quatre', () => {\n expect(2 + 2).toBe(4);\n});\n\nit('la chaîne "hello" a une longueur de 5', () => {\n expect('hello').