mockito : comment unmock une méthode?
J'ai un JUnit classe avec des méthodes différentes pour effectuer différents tests.
- Je utiliser Mockito pour créer un espion sur le réel de l'instance, puis remplacer une méthode qui n'est pas pertinente pour le test, j'ai effectuer.
Est-il un moyen, juste pour le plaisir de nettoyage après moi dans le cas de certains autres tests de courir après mes tests aussi utiliser le même cas et peut exécuter un moqué de la méthode qu'ils n'ont pas de poser, à se moquer, à l'onu-se moquer d'une méthode?
dire que j'ai un espion objet appelé 'wareHouseSpy'
dire que j'ai surchargé la méthode isSomethingMissing :
doReturn(false).when(wareHouseSpy).isSomethingMissing()
Ce qui va être la bonne façon de l'onu-remplacement, et le retour à la normale sur le spy je.e à faire de la prochaine invokation de isSomethingMissing pour exécuter la réelle méthode?
quelque chose comme
doReturn(Mockito.RETURN_REAL_METHOD).when(wareHouseSpy).isSomethingSpy()
ou peut-être
Mockito.unmock(wareHouseSpy)
Qui sait? Je ne pouvais pas trouver rien dans ce domaine
Merci!
Assaf
- "J'utilise Mockito pour créer un espion sur le réel de l'instance, puis remplacer une méthode qui n'est pas pertinente pour le test, j'ai effectuer." Je ne comprends pas, alors pourquoi êtes-vous en se moquant si vous n'en avez pas besoin?
- Est l'entrepôt, dans votre exemple, un singleton ou quelque chose? Sont ces "autres tests" dans la même classe ou vous parlez d'un jeu complètement différent des tests?
Vous devez vous connecter pour publier un commentaire.
Je pense que
le ferait.
Disons que la plupart de vos tests à l'utilisation de l'écrasé de réponse. Alors que vous auriez une méthode setUp() qui ressemble à ceci:
Maintenant, disons que vous voulez annuler l'écrasé de réponse et de la mise en œuvre dans un test:
Cela dépend si vous testez avec TestNG ou JUnit.
Mockito.reset(mockA, mockB, ...)
dans un@BeforeMothod
ou un@AfterMethod
Peut-être que je ne suis pas la suite mais quand vous avez un objet réel
real
:Puis à "unspy"
mySpy
... il suffit d'utiliserreal
.La façon "normale" est de ré-instancier les choses dans votre "installation" de la méthode. Toutefois, si vous avez un objet réel qui est coûteux de construire pour une raison quelconque, vous pourriez faire quelque chose comme ceci:
Aborder cette pièce en particulier:
Si vous êtes en utilisant JUnit, de la façon la plus propre de le faire est d'utiliser
@Before
et@After
(autres cadres ont des équivalents) et de recréer l'instance et l'espion de sorte qu'aucun test ne dépend ou est influencé par tout ce que vous avez fait sur tout autre test. Ensuite, vous pouvez faire le test de la configuration spécifique de l'espion/maquette à l'intérieur de chaque test. Si pour quelque raison vous ne voulez pas de recréer l'objet, vous pouvez recréer l'espion. De toute façon, tout le monde commence avec un espionnage frais à chaque fois.