TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #5173 2.69K
Моки — это инструмент для тестирования поведения объектов в изолированных условиях. Они позволяют заменить реальные зависимости на их имитацию, чтобы избежать обращения к внешним ресурсам, которые могут замедлить выполнение тестов.

Зачем нужны моки
Основная задача моков — проверять взаимодействие между объектами. Это достигается за счёт возможности задать ожидаемое поведение и проверить, насколько реальные вызовы совпадают с этими ожиданиями. Например, можно проверить, сколько раз вызывается метод и с какими параметрами.

Типичные ошибки при использовании моков
1. Отсутствие ожиданий
Если задать только возвращаемое значение без проверки взаимодействий, тест может не обнаружить проблемы.
✅ Правильный подход: указывать, какие методы должны вызываться и с какими параметрами.

2. Мокирование конкретных классов вместо интерфейсов
Моки лучше создавать на основе интерфейсов, так как они реже меняются, чем реализации.

3. Чрезмерное использование моков
Излишнее мокирование усложняет тесты и может указывать на проблемы с проектированием.

4 .Маскировка плохого дизайна
Если моки используются для тестирования тесно связанных компонентов, это может быть признаком нарушения принципа разделения ответственности.

5. Полная зависимость от моков
Хотя моки полезны, они не заменяют другие виды тестов, такие как интеграционные или end-to-end тесты.

Как распознать неправильное использование моков
🔸Тесты не отражают реальные сценарии, что приводит к игнорированию критичных ошибок в продакшене.
🔸Тесты слишком сильно связаны с реализацией, из-за чего частое обновление моков становится необходимостью.
🔸Чрезмерная сложность тестов делает их трудными для чтения и поддержки.
  • 👍 3
  • 🤔 1
  • 👾 1
More from @phpproglib
  1. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026🐸 Библиотека пхпшника
  4. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  5. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  6. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →