Sobes.tech
Junior — Middle
85

Mockito-да Mock пен Spy арасындағы айырмашылықтарды түсіндіріп берсеңіз және қашан қолдану керек?

Сұралған компаниялар
JSA Group
Firecode
IT OneIT One
AstonAston
ГазпромбанкГазпромбанк

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