Attention, Mockito.when (Object) est toujours recommandé pour le stubbing car il est sûr pour les arguments et plus lisible (en particulier lors du stubbing d'appels consécutifs).
Voici ces rares occasions où doReturn () est utile:
1. Quand espionner de vrais objets et appeler de vraies méthodes sur un espion apporte des effets secondaires
List list = new LinkedList(); List spy = spy(list);
// Impossible: la vraie méthode est appelée alors spy.get (0) lève IndexOutOfBoundsException (la liste est encore vide)
when(spy.get(0)).thenReturn("foo");
// Vous devez utiliser doReturn () pour le stubbing:
doReturn("foo").when(spy).get(0);
2. Remplacer un stubbing d'exception précédent:
when(mock.foo()).thenThrow(new RuntimeException());
// Impossible: la méthode foo () tronquée d'exception est appelée, de sorte que RuntimeException est levée. when(mock.foo()).thenReturn("bar");
// Vous devez utiliser doReturn () pour le stubbing:
doReturn("bar").when(mock).foo();
Les scénarios ci-dessus montrent un compromis entre l'élégante syntaxe de Mockito. Notez cependant que les scénarios sont très rares. L'espionnage doit être sporadique et le tronçonnage d'exception est très rare. Sans oublier qu'en général, le remplacement du stubbing est une odeur de code potentielle qui indique trop de stubbing.
doReturn()
est utile.