Skip to content

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

  1. 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)
  2. On appelle la méthode à tester avec des paramètres appropriés
  3. 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 un test

Lancer un test

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.

Dossier Coverage

Page coverage

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.

Exemple coverage

Ressources