Sobes.tech
Junior — Middle
100

Vai jūs varat izskaidrot atšķirības starp Mock un Spy Mockito un kad tos izmantot?

Uzņēmumi, kur jautāja
JSA Group
Firecode
IT OneIT One
AstonAston
ГазпромбанкГазпромбанк

Atbilde no 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 полезно, когда нужно проверить взаимодействие с реальным объектом, но контролировать часть его поведения.