Встречается на собеседованиях • сегодня

В чем разница между @Spy и @Stub

`@Spy` и `@Stub` — это аннотации из Mockito, но они служат разным целям. **@Spy** создает частичный мок, оборачивая реальный объект. Вызовы методов по умолчанию делегируются реальному объекту, но можно переопределить конкретные методы. Пример: ```java List list = new ArrayList<>(); List spyList = Mockito.spy(list); spyList.add("one"); Mockito.when(spyList.size()).thenReturn(100); // Переопределяем size() System.out.println(spyList.size()); // 100 System.out.println(spyList.get(0)); // "one" (реальный метод) ``` **@Stub** (в Mockito нет такой аннотации, вероятно, имеется в виду `@Mock`) создает полный мок. Все методы по умолчанию возвращают `null` или примитивные значения, если их не заглушить явно. Пример: ```java List mockList = Mockito.mock(List.class); Mockito.when(mockList.size()).thenReturn(10); System.out.println(mockList.size()); // 10 System.out.println(mockList.get(0)); // null (метод не заглушен) ``` **Итог:** - `@Spy` — частичный мок, работает с реальным объектом. - `@Mock` (или `@Stub`) — полный мок, все методы нужно заглушать.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы