Tests Unitaires
Introduction
Pour tester le code de notre projet, nous utiliserons Jasmine (v.5.8), un cadre d'application (framework) fait pour tester le code JavaScript. Il est inclus par défaut avec Angular et des fichiers tests sont mêmes créés automatiquement lorsque ng generate est utilisé pour générer les composants et les services.
- Un fichier de test aura toujours le nom
*.spec.ts - Une suite de tests : `describe à utiliser pour mieux organiser les tests
- Un test :
it - À exécuter avant chaque test :
beforeEach
Rappels sur les tests unitaires
- Objectif : automatiser l'exécution de tests
- Unitaire : on teste la plus petite unité possible à la fois
- Comment : les tests unitaires utilisent le mécanisme d'assertions.
- Une assertion est une expression booléenne supposée vraie.
- Si une assertion échoue (n'est pas vraie), une AssertionError est levée.
Principe général
- On crée une instance de la classe à tester (c'est fait pour nous lors de la création des fichiers tests par ng generate)
- On appelle la méthode à tester avec des paramètres appropriés
- On compare le résultat attendu avec le résultat obtenu
On teste :
- le fonctionnement normal
- l'absence d'exception levée
- la gestion d'exceptions (on vérifie que la bonne exception est levée)
Lancer les tests
Configuration Karma
Si vous obtenez un message d'erreur au lancement des tests lié à @angular/devkit, il se pourrait que vous ayez à générer le fichier de configuration de Karma. Pour ce faire utilisez la commande
ng generate config karma
Lancer un test ou une suite de tests
Dans WebStorm, il suffit de cliquer l'icône du triangle vert à côté d'un test ou d'une série de tests pour l'exécuter.


Lancer tous les tests de l'application
-
Pour lancer l'ensemble des tests de l'application
ng test -
Par défaut, les tests restent actifs et seront relancés lorsqu'un changement est apporté au code. Pour désactiver ce comportement ajouter l'option
--no-watch. -
Pour obtenir un rapport de couverture, lancer les tests avec la commande
ng test --no-watch --code-coverage -
Pour lancer les tests d'un fichier spécifique en ligne de commande:
ng test --include=chemin_vers_le_fichier.spec.ts
Rapport de couverture
Le rapport de couverture permet d'examiner le code qui a été couvert par les tests. Ce rapport se trouve dans un nouveau dossier coverage. Il suffit d'ouvrir la page web générée pour consulter le rapport.


Tous les dossiers et fichiers sont des liens. En cliquant sur un fichier vous aurez un rapport détaillé des méthodes et lignes couvertes par les tests.
