Назад к вопросам
Junior — Middle
65
В чем отличия между объектами типа Mock и Spy в тестировании?
Ответ от нейросети
sobes.tech AI
В тестировании на Java объекты Mock и Spy используются для имитации поведения зависимостей, но между ними есть ключевые отличия:
-
Mock — это полностью имитированный объект, который не вызывает реальных методов. Его поведение полностью настраивается в тесте. Используется, когда нужно изолировать тестируемый класс от зависимостей.
-
Spy — это частично имитированный объект, который вызывает реальные методы, если для них не задано иное поведение. Позволяет отслеживать вызовы реальных методов и при необходимости подменять некоторые из них.
Пример с Mockito:
List<String> list = new ArrayList<>();
List<String> spyList = Mockito.spy(list);
spyList.add("one");
Mockito.verify(spyList).add("one");
List<String> mockList = Mockito.mock(List.class);
mockList.add("one");
Mockito.verify(mockList).add("one");
В mockList метод add не добавит элемент в список, а в spyList — добавит, если не переопределено поведение.