Unit-Testing
Dernière mise à jour
Dernière mise à jour
Grâce à Angular CLI, tous les outils nécessaires à l'implémentation et l'exécution des tests unitaires sont installés et pré-configurés dès la création de l'application. Cf. fichier karma.conf.js
.
La commande yarn test
permet de déclencher la commande Angular CLI ng test --watch
.
L'option --watch
permet de relancer les tests unitaires à chaque changement dans le code.
Cela permet de s'assurer en temps réel que les développements en cours n'ont pas d'effets négatifs sur les tests existants et également de savoir quand la fonctionnalité est opérationnelle.
Pour lancer les tests sur un environnement d'intégration continue, pensez à ajouter une commande dédiée dans les scripts
du package.json
:
La commande ng test
lance les tests unitaires en utilisant Karma (ex testacular: Cf. https://github.com/karma-runner/karma/issues/376).
Karma est un outil permettant de configurer et d'interconnecter simplement les différents éléments nécessaires à la mise en place de tests unitaires frontend : "watch" des changements, "build" des tests, exécution des tests sur les "browsers", "debug", "reporting", "code coverage" etc...
Au lancement des tests :
Karma déclenche un serveur permettant de communiquer avec les "browsers" (généralement sur : http://localhost:9876),
Karma déclenche les "browsers" demandés qui se connectent sur le serveur Karma,
Karma "watch" les changements du code source des tests unitaires et récursivement des fichiers importés depuis ces tests,
à chaque changement, Karma déclenche le "build" du code source modifié,
à chaque build, Karma émet un événement aux "browsers" connectés par WebSocket pour les informer du changement et demander l'exécution des tests,
les tests sont exécutés sur le "browser" et les résultats sont transmis au serveur Karma,
Karma produit les rapports en fonction des plugins activés : console, HTML, "code coverage" etc...
Par défaut, tous les fichiers .spec.ts
contenus dans le dossier src
sont importés pour être exécuter. Cf. src/test.ts
.
L'option --code-coverage
permet de produire un rapport indiquant quelles parties de code sont couvertes ou non par les tests.
Les rapports sont produits dans le dossier coverage
et contiennent des fichiers HTML "Human Readable" mais aussi d'autres formats tels que "lcov" pour une intégration plus facile avec les outils d'intégration continue.
Cette option n'est pas activé par défaut pour éviter de ralentir les tests lancés avec l'option --watch
.
Le "code coverage" n'est indiqué que pour les fichiers qui sont importés par les tests unitaires.
Le code source qui n'est jamais importé par les tests unitaires n'est donc pas comptabilisé.