Uważaj, że Mockito.when (Object) jest zawsze zalecane do stubowania, ponieważ jest on bezpieczny dla typu argumentu i bardziej czytelny (szczególnie podczas stubowania kolejnych wywołań).
Oto te rzadkie sytuacje, w których przydatna jest funkcja doReturn ():
1. Szpiegowanie prawdziwych obiektów i wywoływanie prawdziwych metod w szpiegu przynosi efekty uboczne
List list = new LinkedList(); List spy = spy(list);
// Niemożliwe: wywoływana jest prawdziwa metoda, więc spy.get (0) zgłasza wyjątek IndexOutOfBoundsException (lista jest jeszcze pusta)
when(spy.get(0)).thenReturn("foo");
// Do stubowania musisz użyć doReturn ():
doReturn("foo").when(spy).get(0);
2. Przesłanianie poprzedniego usuwania wyjątków:
when(mock.foo()).thenThrow(new RuntimeException());
// Niemożliwe: wywoływana jest wyjątkowa metoda foo (), dlatego zgłaszany jest wyjątek RuntimeException. when(mock.foo()).thenReturn("bar");
// Do stubowania musisz użyć doReturn ():
doReturn("bar").when(mock).foo();
Powyższe scenariusze pokazują kompromis eleganckiej składni Mockito. Pamiętaj jednak, że scenariusze są bardzo rzadkie. Szpiegowanie powinno być sporadyczne, a nadpisywanie wyjątków jest bardzo rzadkie. Nie wspominając o tym, że w ogólności nadpisywanie stubowania jest potencjalnym zapachem kodu, który wskazuje na zbyt wiele stubowania.
doReturn()
jest to przydatne.