Слідкуйте за тим, щоб Mockito.when (Object) завжди рекомендувався для заглушки, тому що він є безпечним для аргументів і є легшим для читання (особливо при заглушці послідовних дзвінків).
Ось ті рідкісні випадки, коли doReturn () стане в нагоді:
1. Під час шпигування реальних об'єктів та виклику реальних методів шпигуну приносять побічні ефекти
List list = new LinkedList(); List spy = spy(list);
// Неможливо: реальний метод називається так spy.get (0) викидає IndexOutOfBoundsException (список ще порожній)
when(spy.get(0)).thenReturn("foo");
// Ви повинні використовувати doReturn () для заглушки:
doReturn("foo").when(spy).get(0);
2. Переосмислення попереднього виключення:
when(mock.foo()).thenThrow(new RuntimeException());
// Неможливо: метод foo () викликається виключенням, так називається RuntimeException. when(mock.foo()).thenReturn("bar");
// Ви повинні використовувати doReturn () для заглушки:
doReturn("bar").when(mock).foo();
Наведені вище сценарії показують компроміс елегантного синтаксису Мокіто. Зауважте, що сценарії дуже рідкісні. Шпигунство має бути спорадичним, а переважаючий виняток - заїдання дуже рідко. Не кажучи вже про те, що загалом зависаючий заглушок є потенційним кодовим запахом, який вказує на занадто багато задирок.
doReturn()
це корисно.