Lembre-se de que Mockito.when (Object) é sempre recomendado para stubbing porque é seguro para o tipo de argumento e mais legível (especialmente ao stubing de chamadas consecutivas).
Aqui estão aquelas raras ocasiões em que doReturn () é útil:
1. Espiar objetos reais e chamar métodos reais em um espião traz efeitos colaterais
List list = new LinkedList(); List spy = spy(list);
// Impossível: método real é chamado para que spy.get (0) lança IndexOutOfBoundsException (a lista ainda está vazia)
when(spy.get(0)).thenReturn("foo");
// Você precisa usar doReturn () para stub:
doReturn("foo").when(spy).get(0);
2. Substituindo um stub de exceção anterior:
when(mock.foo()).thenThrow(new RuntimeException());
// Impossível: o método foo () com exceção de stubbed é chamado para que RuntimeException seja lançada. when(mock.foo()).thenReturn("bar");
// Você precisa usar doReturn () para stub:
doReturn("bar").when(mock).foo();
Os cenários acima mostram uma troca da elegante sintaxe de Mockito. Observe que os cenários são muito raros, no entanto. A espionagem deve ser esporádica e a substituição de exceções é muito rara. Sem mencionar que, em geral, a substituição de stubbing é um cheiro de código em potencial que aponta muitos stubbing.
doReturn()
é útil.