8 votes

Angular: Comment obtenir des méthodes privées dans la couverture de code ?

Y a-t-il un moyen d'ajouter des méthodes privées de ng test --code-coverage dans les rapports de couverture de code en Angular 8 ?

Notre couverture de code NgTest est faible, car il vérifie les méthodes privées.

D'après les articles, les méthodes privées ne devraient pas nécessiter de tests unitaires. Seules les méthodes publiques, qui appellent des méthodes privées, doivent être testées.

*En lisant à propos des balises ; si une méthode est préfixée par public, elle doit être testée unitairement. L'équipe peut également commencer à placer private avant les méthodes. Cette méthode permettrait-elle à ng test de trouver ce qui doit être testé ?

https://softwareengineering.stackexchange.com/questions/100959/how-do-you-unit-test-private-methods

https://anthonysciamanna.com/2016/02/14/should-private-methods-be-tested.html#:~:text=Unit%20Tests%20Should%20Only%20Test,are%20dependent%20on%20the%20object. enter image description here

Actuellement en train de tester Typescript dans Angular 8.

4voto

Akhil Points 1087

Les vérifications de la couverture de code s'appliquent également aux méthodes privées.

Généralement, il existe 2 scénarios où une méthode privée est appelée.

  • Si la méthode privée est appelée à l'intérieur d'une méthode publique (directement ou si elle satisfait une condition)

Dans ce cas, vous devrez appeler la méthode publique dans vos tests et couvrir directement la méthode privée sous-jacente et satisfaire la condition à partir de vos tests.

  • Si la méthode privée est appelée à partir d'un événement DOM, par exemple un clic de bouton

Pour ce cas, vous devrez capturer le bouton en utilisant By.css et déclencher l'événement de clic.

Note :: Jusqu'à ce que Angular Ivy soit introduit, nous pouvions lier l'événement de clic sur le bouton à la méthode privée dans la classe TS mais à partir de maintenant cela n'est pas possible. Cela générera une erreur de compilation.

Propriété 'onClickMethod' est privée et seulement accessible dans la classe 'AppComponent'

2voto

Ankit Garg Points 109

Je rajoute quelques points à la réponse expliquée ci-dessus par Akhil.

  1. Je vois des opérations ternaires utilisées dans votre code. Assurez-vous d'écrire des cas de test pour couvrir tous les scénarios (négatifs, positifs ou basés sur une valeur spécifique). Il en va de même pour toutes les conditions que vous allez utiliser dans votre code.

  2. Une fois que vous avez exécuté vos cas de test, assurez-vous d'ouvrir les outils de développement et de déboguer le processus réel. Cela est nécessaire car parfois votre code générera une exception mais votre cas de test passera quand même. Dans ce cas, la plupart des lignes après les exceptions ne seront pas couvertes.

Assurez-vous toujours qu'il n'y a pas d'erreurs de console lors de l'exécution de votre cas de test. L'outil de débogage de Chrome devrait être une priorité.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X