Quelle est la différence entre utiliser andReturn(T value)
vs andStubReturn(T value)
pour EasyMock?
Dans quelle situation utiliseriez-vous andStubReturn()
où andReturn()
ne peut pas atteindre le même résultat?
Quelle est la différence entre utiliser andReturn(T value)
vs andStubReturn(T value)
pour EasyMock?
Dans quelle situation utiliseriez-vous andStubReturn()
où andReturn()
ne peut pas atteindre le même résultat?
Vous utilisez un talon de retour pour un appel de méthode sur la maquette que vous vous attendez à se produire, mais ne sont pas autrement intéresse. Vous utilisez un retour régulier pour un "régulier" de l'appel de méthode.
Considérons la méthode suivante:
public void someMethod(String arg) {
if (logger.isDebugEnabled()) {
logger.debug("Calling doSomething() on service "
+ service.getName().hashCode());
}
service.postMessage("{" + arg + "}");
if (logger.isDebugEnabled()) {
logger.info("Finished calling doSomething() on service "
+ service.getName().hashCode());
}
}
...où est - service
est un mockable champ. L' hashCode()
chose dans le journal des déclarations est artificiel, mais le point est que votre maquette doit répondre à un nombre d'appels à l' getName()
pour éviter les entrées en phase nationale, alors que vous ne pourriez normalement pas moins de soins sur elle.
Lors de l'écriture d'un EasyMock base de test unitaire pour cette méthode, vous feriez andStubReturn()
l'appel à getName()
et l'utilisation normale andReturn()
pour l'appel à la postMessage(String)
. Lorsque vous vérifiez le simulacre de l'objet, il va prendre en compte uniquement la dernière et votre le test ne pas se briser si vous modifiez le log4j config.
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.