Оба подхода позволяют изолировать тестируемый объект от внешних зависимостей и контролировать его поведение в тестовых условиях. Однако у них есть некоторые различия.
unit-stub
- это объект, который заменяет реальный объект, но не имитирует его полностью, а предоставляет только минимальный набор функций, необходимых для тестирования. Stub
может предоставлять фиктивные данные для тестирования, а также имитировать поведение реального объекта. Однако он не предоставляет полную функциональность реального объекта, а только те методы, которые необходимы для тестирования.
unit-mock
- это объект, который имитирует поведение реального объекта и предоставляет специальные методы для проверки вызовов и параметров, передаваемых в эти методы. Mock
может проверять, как объект взаимодействует с другими объектами, и контролировать его поведение в тестовых условиях.
Характеристика | Mock | Stub |
---|---|---|
Основная цель | Имитация поведения реального объекта и проверка взаимодействия с другими объектами. | Замена реального объекта для предоставления минимального набора функций, необходимых для тестирования. |
Функциональность | Предоставляет полную имитацию поведения реального объекта, включая проверку вызовов методов и параметров. | Предоставляет только те методы, которые необходимы для тестирования, без полной имитации всех функций реального объекта. |
Проверка вызовов | Может проверять, как объект взаимодействует с другими объектами, и контролировать его поведение в тестовых условиях. | Обычно не проверяет вызовы методов, а просто предоставляет фиктивные данные или результаты. |
Использование | Используется для проверки взаимодействия между объектами и контроля поведения в тестовых условиях. | Используется для изоляции тестируемого объекта от внешних зависимостей и предоставления минимальной функциональности для тестирования. |
Пример | Проверка, что метод save был вызван с определенными параметрами. | Возврат фиктивного значения из метода findById для проверки логики в тестируемом объекте. |
Сложность | Может быть более сложным в настройке, так как требует имитации всего поведения реального объекта. | Обычно проще в настройке, так как предоставляет только минимальный набор функций. |
Контроль поведения | Позволяет контролировать и проверять поведение объекта в тестовых условиях. | Позволяет контролировать только те аспекты, которые необходимы для тестирования, без полной имитации всего поведения. |