19 Mai 2014

Comment exécuter les TU JavaScript avec Karma

Voici une petite présentation des étapes nécessaire à la réalisation et à l’exécution de tests unitaires en JavaScript.
Ici, nous utiliserons le framework Jasmine (http://jasmine.github.io/2.0/introduction.html) pour écrire nos tests.

Mise en place de l’environnement

L’exécution des tests unitaire avec Jasmine est faisable depuis une simple page web. Néanmoins, cela est assez contraignant car il est alors nécessaire d’avoir une page web qui va recenser nos scripts js à tester ainsi que les scripts js de tests. On va donc opter pour une autre solution : l’utilisation de Karma (http://karma-runner.github.io/).
Karma est un petit outil permettant d’exécuter des TU JS avec un framework spécifique (Jasmine ou autre) et fourni divers rapport d’exécution (résultat, code coverage).
Karma est installable par le gestionnaire de package node (NPM). Pour cela, il faudra tout d’abord installer Nodejs : www.nodejs.org
Une fois nodejs installer, on peut préparer le fichier package.json pour l’application. Ce fichier contient divers informations sur le site web (nom, version, licence, …) mais surtout, la liste des package Node qui seront utiles pour développer. Dans notre cas, il devra contenir la dépendance vers Karma.
Pour préparer ce fichier on lancera la commande suivante à partir de la racine du projet web :

 npm init 

Il faudra alors répondre à quelques question pour finaliser la création du fichier.
Une fois ce fichier créer, on va pouvoir ajouter la dépendance vers Karma. Pour descendre ce package, exécuter la ligne de commande suivante dans le dossier contenant le package.json :

 npm install karma --save-dev

L’argument –save-dev, permet de spécifier que ce plugin est local au projet et pas global à la machine.
installer le client karma au global sur le poste (pour éviter d’aller le chercher dans les node_modules :

 npm install -g karma-cli 

puis, configurer karma pour l’application :

 karma init 

Répondez aux question qui seront alors posées, notamment :

  • Framework de TU : Jasmine
  • Fichiers JS à charger : regexp donnant la liste des js (scripts/libs/**/*.js, scripts/app/**/*.js puis scripts/tests/**/*.js par exemple)
  • Relancer les TU à chaque modification de scripts : Oui

Il ne reste plus qu’à lancer la commande Karma start avec le fichier de configuration précédemment créé :

 karma start monfichier.conf.js

Et là, en fonction des runners configurés, les différents navigateurs vont démarrer pour exécuter les tests. Vous aurez, dans la console, le résultat d’exécution en vert si tout s’est bien passé, ou en rouge dans le cas contraire :

Karma start

Share