testing-aqa junior

Mockito: Mock vs Spy — в чём разница?

Ответ

Mock: полностью пустой объект, все методы возвращают default (null, 0, false). Spy: обёртка над реальным объектом, методы вызываются по-настоящему, если не замоканы. Для Spy нужно писать doReturn().when(spy).method(), а не when(spy.method()).thenReturn(...), потому что when(spy.method()) сначала реально вызовет метод.

Разбор: Mock — это «пустышка» с default-значениями для всех методов, а Spy оборачивает реальный объект и вызывает его методы по-настоящему, если они не застаблены. С Spy нужен doReturn().when(spy).method(), потому что when(spy.method()) сначала реально вызовет метод. Ловушки в дистракторах — перепутанные роли Mock/Spy и неверное утверждение, что doReturn не работает со spy.

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

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