Назад к вопросам
Junior — Middle
65
Чем отличаются аннотации Mock и Spy в тестировании?
Ответ от нейросети
sobes.tech AI
В тестировании на Java аннотации @Mock и @Spy используются для создания тестовых двойников, но с разным поведением:
-
@Mockсоздаёт полностью имитированный объект, у которого все методы по умолчанию ничего не делают (возвращают значения по умолчанию). Его поведение настраивается вручную черезwhen(...).thenReturn(...). Используется для изоляции тестируемого кода от зависимостей. -
@Spyсоздаёт частично имитированный объект, который вызывает реальные методы оригинального объекта, если не переопределены. Это полезно, когда нужно протестировать часть поведения объекта, сохраняя при этом реальную логику.
Пример:
@Mock
List<String> mockedList;
@Spy
ArrayList<String> spyList = new ArrayList<>();
// mockedList.add("test") не изменит состояние списка, нужно настраивать поведение
// spyList.add("test") вызовет реальный метод add и добавит элемент