Sobes.tech
Junior — Middle
95

Ar galite paaiškinti skirtumus tarp Mock ir Spy Mockito ir kada juos naudoti?

Įmonės kur klausė
JSA Group
Firecode
IT OneIT One
AstonAston
ГазпромбанкГазпромбанк

Atsakymas iš AI

sobes.tech AI

В Mockito:

  • Mock — это полностью имитированный объект, у которого все методы по умолчанию ничего не делают или возвращают значения по умолчанию. Его поведение настраивается вручную.
  • Spy — это частично имитированный объект, который оборачивает реальный объект. По умолчанию вызывает реальные методы, но можно переопределять поведение отдельных методов.

Когда использовать:

  • Mock — когда нужно полностью изолировать тестируемый класс от зависимостей и контролировать все вызовы.
  • Spy — когда нужно протестировать реальный объект, но при этом подменить поведение некоторых методов (например, чтобы избежать побочных эффектов).

Пример:

List<String> list = new ArrayList<>();
List<String> spyList = Mockito.spy(list);

Mockito.doReturn("mocked").when(spyList).get(0);

System.out.println(spyList.get(0)); // Выведет "mocked"
System.out.println(spyList.size()); // Вызовет реальный метод size(), вернёт 0

Использование spy полезно, когда нужно проверить взаимодействие с реальным объектом, но контролировать часть его поведения.