testing-aqa middle

В чём разница: when/thenReturn vs doReturn/when?

Ответ

when(x.method()).thenReturn(y) — стандартный способ. doReturn(y).when(x).method() — нужен для spy (иначе вызовется реальный метод) и для void-методов.

Разбор: when(x.method()).thenReturn(y) читаемее, но фактически вызывает x.method() при настройке — для spy это запустит реальную реализацию, поэтому там и для void-методов используют doReturn(y).when(x).method(), не вызывающий метод. Дистракторы переворачивают роли spy/mock, объявляют формы эквивалентными или приписывают им работу со static/final, что Mockito так не решает.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться