71 votes

Comment puis-je savoir si un objet est une maquette Mockito ?

Est-il possible de dire dans le code si un objet donné est un simulacre de Mockito ou non ?

La raison pour laquelle j'aimerais faire cela est de renvoyer un message d'erreur différent lorsqu'un simulacre est utilisé. Cela serait utilisé pour suggérer aux autres développeurs d'utiliser une maquette pré-préparée qui est déjà configurée pour répondre aux appels de manière utile plutôt que de créer la maquette eux-mêmes.

Pour le moment, le meilleur que j'ai est object.getClass().getName().contains("EnhancerByMockitoWithCGLIB") mais cela me semble bidon.

66voto

Tomasz Nurkiewicz Points 140462

On dirait qu'il n'y a pas une telle API (veuillez soulever un problème, ça devrait l'être !) Heureusement (suite à votre commentaire ci-dessous) il existe une méthode dans le package org.mockito.internal.util

 import org.mockito.internal.util.MockUtil;

new MockUtil().isMock(obj)

À l'avenir, la Mockito.isMock() pourrait être ajoutée à l'API publique, voir : Problème 313 : Fournir isMock en dehors de org.mockito.internal) .

63voto

Spina Points 2769

En guise de suivi, l'API publique Mockito dispose désormais de cette méthode :

 MockingDetails org.mockito.Mockito.mockingDetails(Object toInspect)

Ce qui est le résultat du problème soulevé par @David Wallace. L'objet renvoyé prend en charge les méthodes isMock() ainsi que isSpy() ainsi que quelques autres méthodes qui fournissent des informations moqueuses supplémentaires.

0voto

surga Points 116

si vous utilisez io.mockk.mockk alors vous pouvez faire :

 isMockKMock()

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