Моки и стабы
-
Mock:
- Цель: Предоставляет возможность записи и проверки вызовов методов.
- Действия: Моки позволяют настраивать ожидаемое поведение, записывать вызовы методов и проверять, были ли они выполнены с заданными параметрами.
- Пример: Если у вас есть класс, который взаимодействует с базой данных, мок может имитировать вызовы к базе данных, записывая, например, какие запросы были отправлены.
- Примечание: Моки обычно используются для тестирования взаимодействия компонентов, чтобы убедиться, что объект взаимодействует с другими объектами, как ожидалось.
-
Stub:
- Цель: Предоставляет фиксированные ответы на вызовы методов.
- Действия: Стабы предоставляют заглушки для методов, возвращая заранее определенные значения, которые вы устанавливаете.
- Пример: Если у вас есть метод, который вызывает какой-то внешний сервис, стаб может предоставить поддельный ответ от этого сервиса, чтобы изолировать тестируемый метод от внешних зависимостей.
- Примечание: Стабы часто используются для создания предсказуемого окружения в тестах и избегания нежелательных внешних вызовов.
Юнит и функциональные тесты
- Юнит-тесты:
- Цель: Проверка отдельных компонентов (обычно методов или функций) на корректность их работы.
- Область тестирования: Изолированные части кода, как правило, отдельные функции, методы или классы.
- Характеристики: Очень специфичные и фокусируются на мелких деталях. Например, юнит-тест может проверять, правильно ли метод возвращает ожидаемое значение или взаимодействует с другими объектами внутри класса.
- Изоляция: Обычно проводятся в изоляции от внешних зависимостей (часто используют моки и стабы для этого).
- Функциональные тесты:
- Цель: Проверка того, как различные компоненты (или даже все приложение) взаимодействуют друг с другом для обеспечения выполнения функциональности приложения.
- Область тестирования: Целые функциональные области, иногда включающие в себя несколько компонентов или даже всё приложение.
- Характеристики: Более общие и охватывают более широкий спектр функциональности. Например, функциональный тест может проверять, как веб-приложение обрабатывает запросы от пользователя и взаимодействует с базой данных.
- Изоляция: Тестирование в более натуральной среде, иногда с реальными внешними зависимостями.