Tenga en cuenta que Mockito.when (Object) siempre se recomienda para el apilamiento porque es seguro para el tipo de argumento y más legible (especialmente cuando se topan llamadas consecutivas).
Estas son esas raras ocasiones en que doReturn () es útil:
1. Cuando espiar objetos reales y llamar métodos reales a un espía trae efectos secundarios
List list = new LinkedList(); List spy = spy(list);
// Imposible: el método real se llama así que spy.get (0) arroja IndexOutOfBoundsException (la lista aún está vacía)
when(spy.get(0)).thenReturn("foo");
// Tienes que usar doReturn () para stubbing:
doReturn("foo").when(spy).get(0);
2. Anulación de una excepción anterior:
when(mock.foo()).thenThrow(new RuntimeException());
// Imposible: el método foo () con excepción se llama así que se lanza RuntimeException. when(mock.foo()).thenReturn("bar");
// Tienes que usar doReturn () para stubbing:
doReturn("bar").when(mock).foo();
Los escenarios anteriores muestran una compensación de la elegante sintaxis de Mockito. Sin embargo, tenga en cuenta que los escenarios son muy raros. El espionaje debe ser esporádico y anular las excepciones es muy raro. Sin mencionar que, en general, anular el apisonamiento es un posible olor a código que señala demasiado apisonamiento.
doReturn()
es útil.