140 likes | 339 Views
MOCK. Définition. Simuler le comportement d'un autre objet concret de façon maitrisée . Utilisé pour les tests unitaires Mais elle peut aussi être mise en œuvre lors des développements pour par exemple remplacer un objet qui n'est pas encore écrit.
E N D
Définition • Simuler le comportement d'un autre objet concret de façon maitrisée. • Utilisé pour les tests unitaires • Mais elle peut aussi être mise en œuvre lors des développements pour par exemple remplacer un objet qui n'est pas encore écrit. • Permet aux tests unitaires de se concentrer sur les tests du code de la méthode sans avoir à se préoccuper des dépendances. • Simuler le comportement d'un objet permettant de réaliser les tests de l'objet de façon isolée et répétable. • Mock permet de simuler le comportement d'un autre objet concret de façon maitrisée et de vérifier les invocations qui sont faites de cet objet. • Cette double fonctionnalité permet dans un test unitaire de faire des tests sur l'état et des tests sur le comportement
Type de mock • Il existe deux grands types d'objets mock • Statique : ce sont des classes écrites ou générées par le développeur • Dynamique : ils sont mis en œuvre via un framework • Les objets mock peuvent être codés manuellement ou utiliser un framework qui va permettre de les générer dynamiquement. • L'avantage des mocks dynamiques c'est qu'aucune classe implicite n'a besoin d'être écrite.
Quand utiliser des mocks ? • L'objet réel a un comportement non déterministe (il produit des résultats imprévisibles, comme une date ou la température actuelle) • L'objet réel est difficile à mettre en place, ou est lent (cas d'une base de données, ou d'un service web) • Le comportement de l'objet réel est difficile à déclencher (par exemple, un problème de réseau) • L'objet réel a (ou est) une interface utilisateur • Le test doit demander à l'objet la manière dont elle est utilisée (par exemple, confirmer qu'une fonction a été effectivement appelée) • L'objet réel n'existe pas encore (un problème courant lorsque l'on doit interagir avec d'autres équipes ou de nouveaux systèmes matériels)
Exemple d'utilisation dans les tests unitaires • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.
Mise en œuvre des objets de type mock • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.
Utilité • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.
Utilisation dans les tests unitaires • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.
Utilisation dans les tests d’intégration • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.
Simulation de l’appel à des ressources • Les tests unitaires doivent toujours s'exécuter le plus rapidement possible notamment si ceux-ci sont intégrés dans un processus de build automatique. Un test unitaire ne doit donc pas utiliser de ressources externes comme une base de données, des fichiers, des services, ... Les tests avec ces ressources doivent être faits dans les tests d'intégration puisque se sont des dépendances.
La simulation du comportement de composants ayant des résultats variables • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.
La simulation des cas d’erreurs • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.
Framework • Un objet de type doublure permet donc de simuler le comportement d'un autre objet concret de façon maitrisée.