Tutoriel Jasmine Framework : tests unitaires avec exemple
⚡ Résumé intelligent
Jasmine est axée sur le comportement JavaFramework de test de scripts qui exécute des tests unitaires Node.js sans navigateur ni DOM, utilisant des blocs describe, des spécifications et des comparateurs expect pour vérifier que chaque fonction exportée se comporte comme documenté.
Qu’est-ce que JasmineJS ?
Jasmine est un logiciel open source et le plus populaire JavaCadre de test de bibliothèque de scripts pour tester tout type de JavaApplication de script. Jasmine suit la procédure de développement piloté par le comportement (BDD) pour garantir que chaque ligne de JavaL'instruction de script est correctement testée au niveau unitaire.
À quoi sert le framework Jasmine ?
Les tests sont un élément clé de toute application. Pour les tests unitaires Node.js, le framework disponible est Jasmine. Au début des années 2000, il existait déjà un framework de test. Javascénario applications appelées JsUnit. Later ce framework a été mis à niveau et est maintenant connu sous le nom de Jasmine.
Jasmine aide à l'automatisation Tests unitaires, une pratique devenue essentielle lors du développementping et le déploiement d'applications web modernes.
Dans ce didacticiel Jasmine, vous apprendrez comment configurer votre environnement avec Jasmine et comment exécuter des tests Jasmine pour votre première application Node.js.
Jasmine pour tester les applications Node.js
Jasmine est un Développement axé sur le comportement (BDD) cadre de test pour JavaScript. Il le fait pas s'appuyer sur les navigateurs, le DOM ou tout autre JavaFramework de script. Il est donc adapté aux sites web. Node.js projets, ou n'importe où ailleurs JavaLe script peut être exécuté. Pour commencer à utiliser Jasmine, vous devez d'abord télécharger et installer les modules Jasmine nécessaires.
Comment configurer l'environnement de test Jasmine
Dans la suite de ce tutoriel Jasmine pour Node.js, vous devrez initialiser votre environnement et examiner le fichier de configuration de Jasmine. Les étapes ci-dessous montrent comment configurer Jasmine dans votre environnement.
Étape 1) Installer les modules NPM
Vous devez Installer NPM Le module jasmine permet d'utiliser le framework Jasmine au sein d'une application Node.js. Pour installer le module jasmine-node, exécutez la commande ci-dessous.
npm install jasmine-node
Note de version (2026) : La commande historique ci-dessus fonctionne toujours, mais la nœud de jasmin Ce module est en mode maintenance et intègre Jasmine 1.3 ; ne le conservez donc que pour les projets existants. Les nouvelles installations de Node.js utilisent la version maintenue. Jasmine CLI en tant que dépendance de développement et l'appelle via npx :
npm install --save-dev jasmine npx jasmine init
Jasmine 6.x est la branche principale actuelle et prend en charge Node.js 20, 22 et 24, et Node.js 24 est la version LTS active en 2026.
Étape 2) Initialiser l'environnement Jasmine
Initialisation du projet – Jasmine crée alors un répertoire « spec » et un fichier de configuration JSON. Le répertoire « spec » sert à stocker tous vos fichiers de test. Ainsi, Jasmine saura où se trouvent vos tests et pourra les exécuter en conséquence. JSON Ce fichier sert à stocker des informations de configuration spécifiques à Jasmine.
Pour initialiser l'environnement Jasmine, exécutez la commande ci-dessous.
jasmine init
Étape 3) Inspectez votre fichier de configuration.
Le fichier de configuration sera stocké dans le dossier spec/support sous le nom de jasmine.json. Ce fichier énumère les fichiers sources et les fichiers de spécifications que vous souhaitez que le programme d'exécution Jasmine inclue.
La capture d'écran ci-dessous montre un exemple typique du fichier jasmine.json pour Jasmine.
- Notez que le répertoire spec est spécifié ici. Comme indiqué précédemment, lorsque Jasmine s'exécute, il recherche tous les tests de ce répertoire.
- La prochaine chose à noter est le paramètre spec_files – Cela indique que quels que soient les fichiers de test créés, ils doivent être ajoutés au mot-clé « spec ».
Note de configuration : Dans Jasmine 6.x, le même fichier accepte également aides, qui se chargent une fois avant chaque spécification, et un env Le bloc contient des options telles que random et stopSpecOnExpectationFailure. Le glob spec_files par défaut est **/*[sS]spec.?(m)jset un fichier différent peut être transmis avec –config ou la Chemin de configuration de Jasmine variable.
Ensuite, dans ce didacticiel du framework Jasmine, nous apprendrons comment utiliser Jasmine pour tester les applications Node.js.
Comment utiliser Jasmine pour tester les applications Node.js
Afin d'utiliser les tests unitaires Jasmine pour les applications Node.js, une série d'étapes doivent être suivies.
Dans l'exemple ci-dessous, nous allons définir un module qui additionne deux nombres à tester. Nous créerons ensuite un fichier de code distinct contenant le code de test, puis nous utiliserons Jasmine pour tester la fonction Add.
Étape 1) Définissez le code qui doit être testé. Nous allons définir une fonction qui ajoutera 2 nombres et renverra le résultat. Ce code va être écrit dans un fichier appelé « Add.js ».
La capture d'écran ci-dessous montre le module Add.js finalisé, et le même code est répété sous forme de texte en dessous.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Explication
- Le mot-clé « exports » est utilisé pour garantir que la fonctionnalité définie dans ce fichier est effectivement accessible par d'autres fichiers.
- Nous définissons ensuite une fonction appelée « AddNumber ». Cette fonction est définie pour prendre 2 paramètres, a et b. La fonction est ajoutée au module « exports » pour faire de la fonction une fonction publique accessible par d'autres modules d'application.
- Nous faisons enfin en sorte que notre fonction renvoie la valeur ajoutée des paramètres.
Étape 2) Ensuite, nous devons définir notre code de test Jasmine, qui servira à tester notre fonction « Add » dans le fichier Add.js. Le code ci-dessous doit être placé dans un fichier appelé add-spec.js.
NoteLe mot « spec » doit être ajouté au fichier de test pour qu'il puisse être détecté par Jasmine.
La capture d'écran ci-dessous montre le même fichier de spécifications ouvert dans un éditeur.
var app=require("../Add.js"); describe("Addition",function(){ it("The function should add 2 numbers",function() { var value=app.AddNumber(5,6); expect(value).toBe(11); }); });
Code Explication
- Nous devons d'abord inclure notre fichier Add.js afin de pouvoir tester la fonction 'AddNumber' dans ce fichier.
- Nous créons maintenant notre module de test. La première partie du module de test consiste à décrire une méthode qui donne essentiellement un nom à notre test. Dans ce cas, le nom de notre test est « Addition ».
- Le bit suivant consiste à donner une description de notre test en utilisant la méthode « it ».
- Nous appelons maintenant notre méthode AddNumber en lui fournissant deux paramètres : 5 et 6. Ces paramètres seront transmis à la méthode AddNumber du fichier Add.js. La valeur de retour est ensuite stockée dans une variable nommée value.
- La dernière étape consiste à effectuer la comparaison, c'est-à-dire notre test proprement dit. Puisque nous nous attendons à ce que la valeur renvoyée par la fonction AddNumber soit 11, nous la définissons à l'aide de la méthode expect(value).toBe(la valeur attendue).
Sortie
- Pour exécuter le test, il faut exécuter la commande jasmine.
- La capture d'écran ci-dessous montre qu'après l'exécution de la commande Jasmine, celle-ci détecte le test « add-spec.js » et l'exécute. Les erreurs éventuelles sont signalées.
L'exemple Add utilise un seul comparateur, mais Jasmine en fournit un ensemble complet. Le tableau ci-dessous répertorie ceux qui couvrent la quasi-totalité des assertions que vous serez amené à écrire.
Allumettes au jasmin que vous utiliserez le plus
Un matcher est la comparaison qui suit expect(). Chaînez .not avant tout matcher pour l'inverser, comme dans expect(value).not.toBe(11).
| matchers | Ce qu'il vérifie | Utilisation typique |
| être | Identité stricte, la même comparaison que === | s'attendre à ce que la valeur soit 11 |
| égaler | Égalité profonde des objets et des tableaux | s'attend à ce que l'utilisateur soit égal à {id: 1}. |
| contenir | Appartenance à un tableau ou à une chaîne de caractères | s'attend à ce que les fichiers contiennent « add-spec.js ». |
| à définir | La valeur n'est pas indéfinie | s'attend à ce que (app.AddNumber).soBeDefined() |
| lancer | La fonction encapsulée génère une erreur | s'attendre à ce que (callAdd).toThrow() |
| avoir été appelé | Un espion a été invoqué au moins une fois. | s'attendre à ce que (logger.write).toHaveBeenCalled() |
Deux habitudes permettent de rendre les erreurs plus lisibles. Utilisez `toBe` uniquement pour les types primitifs et les références identiques, car deux objets ayant le même contenu ne sont jamais `===`. Utilisez `toEqual` pour les structures et ajoutez `toHaveBeenCalledWith` lorsque les arguments sont aussi importants que l'appel lui-même.
Installation, démontage et espionnage dans Jasmine
Les suites logicielles complètes nécessitent un état partagé et des doublons pour les collaborateurs lents. Jasmine fournit les deux sans aucun module supplémentaire.
- avant et après chaque Exécutez ces instructions avant et après chaque spécification à l'intérieur d'un bloc describe, qui est l'endroit naturel pour reconstruire les fixtures.
- avant et après tout Ces opérations ne s'exécutent qu'une seule fois pour l'ensemble du bloc ; il est donc conseillé de les réserver aux tâches coûteuses telles que l'ouverture d'une connexion.
- espionner(objet, 'méthode') remplace une méthode réelle par une tracroi double ; ajoutez .and.returnValue() pour contrôler sa réponse.
- jasmine.createSpy('nom') construit un objet double autonome pour un rappel qui n'a aucun objet auquel se rattacher.
- Spécifications asynchrones peut être déclarée asynchrone et attendue, peut renvoyer une promesse, ou peut accepter une fonction de rappel « done » qui doit être appelée exactement une fois.
Les espions se réinitialisent entre les tests, de sorte qu'une suite de tests ne divulgue jamais une méthode simulée au test suivant. Cette isolation permet à un test défaillant de pointer vers un seul défaut plutôt que vers une chaîne de défauts, ce qui correspond à la même discipline décrite dans le tests unitaires fondamentaux.
Jasmine contre Mocha contre Jest
Jasmine est l'un des trois frameworks qui dominent JavaLes tests de script, et le choix se résume généralement à la quantité de câblage que vous souhaitez gérer.
| Aspect | Jasmin | Mocha | il y a |
| Affirmations | Construit en | Ajouté, généralement Chai | Construit en |
| Espions et moqueries | Construit en | Ajouté, généralement Sinon | Construit en |
| De bout en bout | Port série | Port série | Parallèlement aux processus |
| Instantanés | Non | Non | Oui |
| Maison commune | Angular, Node.js pur | Piles Node.js flexibles | React et les outils de regroupement modernes |
Choisissez Mocha lorsque vous souhaitez assembler votre propre pile d'assertions et de simulations, et il y a Lors d'exécutions parallèles, la couverture et les instantanés sont plus importants que le contrôle de la configuration. Jasmine reste l'option la plus légère et complète, ce qui explique sa popularité. tests d'automatisation suites




