Concept

Mock (programmation orientée objet)

Résumé
En programmation orientée objet, les mocks (simulacres ou mock object) sont des objets simulés qui reproduisent le comportement d'objets réels de manière contrôlée. Un programmeur crée un mock dans le but de tester le comportement d'autres objets, réels, mais liés à un objet inaccessible ou non implémenté. Ce dernier est alors remplacé par un mock. Le concept a été utilisé pour la première fois lors de la conférence XP 2000, dans un article de Tim Mackinnon, Steve Freeman et Philip Craig intitulé Endo-Testing: Unit Testing with Mock Objects. Le terme lui-même est emprunté au roman Alice au pays des merveilles de Lewis Carroll plus particulièrement de la Fausse Tortue (ou Tortue Fantaisie, en anglais The Mock Turtle) dans la version originale. Une traduction de l'expression mock object par celle d'objet fantaisie, est proposée par certains. Une définition de l'adjectif mock étant not real but appearing or pretending to be exactly like something, on pourra lui préférer celle d'objet factice (mais on perdrait alors la référence amusante). Dans un test unitaire, les mocks peuvent simuler le comportement d'objets réels et complexes et sont utiles à ce titre quand ces objets réels sont impossibles à utiliser. On peut citer les cas suivants : Remplacer un comportement non déterministe (l'heure ou la température ambiante). Si l'objet a des états difficiles à reproduire (une erreur de réseau par exemple). Si l'initialisation de l'objet est longue (ex. : création d'une base de données). Si l'objet n'existe pas ou si son comportement peut encore changer. S'il est nécessaire d'inclure des attributs et des méthodes uniquement à des fins de test. Par exemple, un programme d'alarme qui produira une sonnerie à une heure donnée. Pour le tester, le programme devra attendre l'heure prévue afin de vérifier que la sonnerie se produit. Si un mock est utilisé, celui-ci pourra être déréglé en vue de simuler l'heure de déclenchement de la sonnerie. Un mock a la même interface que l'objet qu'il simule autorisant ainsi l'objet client à ignorer s'il interagit avec un objet réel ou un objet simulé.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.