Моки, стабы, заглушки: зачем они нужны
🎯 Цель урока:
Понять, как использовать моки, стабы и заглушки для изоляции тестируемого кода и упрощения проверки сложных систем.
✨ Результат: Вы сможете имитировать зависимости в тестах, чтобы находить баги быстрее и точнее!
Что такое моки, стабы и заглушки?
📌 Простыми словами: Это «актеры», которые заменяют реальные компоненты системы во время тестирования, чтобы:
- Изолировать тестируемый модуль.
- Упростить воспроизведение сложных сценариев.
- Ускорить выполнение тестов.
👉 Аналогия: Как дублеры в кино 🎥 — они заменяют главных героев в опасных сценах, чтобы съемки прошли без проблем.
1. Заглушки (Stubs) 🧩
📌 Что это?
Простой объект, который возвращает заранее заданные данные вместо реального компонента.
Пример из жизни:
Тестируете калькулятор, но кнопка «умножить» ещё не работает. Заглушка для умножения всегда возвращает 10 (даже если ввести 2 × 5).
Пример из IT:
- Заглушка для платежного шлюза всегда отвечает «Оплата успешна».
- Заглушка для базы данных возвращает тестовый набор пользователей.
Когда использовать?
- Когда нужно подменить внешний сервис (например, API, который ещё не готов).
- Для проверки реакции модуля на разные данные (успех/ошибка).
2. Стабы (Stubs) 🎭
📌 Что это?
Объект, который не только возвращает данные, но и имитирует поведение реального компонента.
Пример из жизни:
Автоответчик в кол-центре: «Спасибо за звонок! Ваш номер в очереди — 5». Он имитирует живого оператора.
Пример из IT:
Стаб для сервиса погоды:
- Принимает запрос с городом.
- Всегда возвращает температуру +25°C.
Когда использовать?
Для проверки сценариев с заранее известными условиями (например, «если сервис недоступен»).
3. Моки (Mocks) 🕵️♂️
📌 Что это?
Объект, который проверяет, как тестируемый модуль взаимодействует с другими компонентами.
Пример из IT:
- Мок для логгера проверяет, что ошибка была записана в журнал.
- Мок для API проверяет, что запрос отправлен с правильными параметрами.
Когда использовать?
Когда важно убедиться, что модуль корректно вызывает другие сервисы.
Практическое задание 🧩📝
Задача: Определите, какой инструмент использовать:
- Проверить, что приложение отправляет запрос к API погоды при запуске.
- Имитировать ответ «Недостаточно средств» от платежной системы.
- Заменить реальную базу данных тестовыми данными.
Пример ответа:
- Мок (проверяем вызов API).
- Стаб (имитируем ответ с ошибкой).
- Заглушка (подменяем БД).
Ограничения и советы
- Не переусердствуйте: Если все компоненты заменены заглушками, тесты могут потерять связь с реальностью.
- Комбинируйте подходы: Например, моки + заглушки для проверки сложных сценариев.
Итог урока 🎓✨:
Заглушки — для подмены данных.
Стабы — для имитации поведения.
Моки — для проверки взаимодействий.
Используйте их, чтобы тесты были быстрыми, изолированными и надежными!
💡 Вопрос для размышления:
Как бы вы протестировали модуль, который отправляет email, если почтовый сервер временно недоступен?
Тестовые вопросы
Для прохождения тестов необходимо войти в свой аккаунт или зарегистрироваться.
Комментарии
Пока нет комментариев.
Комментарии