Моки и стабы (WireMock)

Тема дорожной карты · QA-инженер

Мокирование API — это практика имитации поведения реальных API-эндпоинтов, позволяющая запускать наборы тестов независимо от внешних сервисов, сторонних зависимостей или нестабильных staging-бэкендов. Возвращая заранее определённые ответы на известные шаблоны запросов, мокирование API устраняет нестабильные тесты, вызванные сетевыми задержками или сбоями зависимых сервисов, и позволяет QA-инженерам проверять сценарии с ошибками — ответы 500, таймауты, некорректный JSON — которые сложно воспроизвести на живом API. Инструменты WireMock, MockServer и msw (Mock Service Worker) позволяют командам декларативно задавать заглушки; например, WireMock можно запустить как Docker-контейнер командой docker run wiremock/wiremock и настроить через его REST API или JSON-файлы маппингов для перехвата запросов, отправляемых REST Assured или коллекциями Postman. При тестировании фронтенда с Playwright или Cypress мокирование API через page.route() или cy.intercept() делает UI-автоматизацию детерминированной, управляя данными, которые отображает приложение. Мокирование API — краеугольный камень стратегии shift-left testing, позволяющий проводить контрактное и интеграционное тестирование на уровне юнитов внутри CI/CD-пайплайнов на GitHub Actions или Jenkins.

Как это работает

Моки и стабы (WireMock) валидирует HTTP/REST/GraphQL/gRPC-контракты независимо от UI. Инструменты: Postman (интерактивный), Insomnia, curl + jq (CLI), Bruno (open-source git-friendly альтернатива Postman), RestAssured (Java), pytest + requests (Python). Валидируйте статус, заголовки, схему тела (JSON Schema, OpenAPI), бизнес-правила, идемпотентность, auth, rate-limit, error-ответы. Contract testing (Pact) ловит breaking changes между сервисами.

Когда применять

Тестируйте API-слой отдельно от UI — API-тесты в 100× быстрее + стабильнее browser-тестов на той же логике. Покройте auth-флоу, валидационные ошибки, edge cases (пустое тело, oversized payload, malformed JSON). OpenAPI/Swagger как спека; schema-валидируйте каждый ответ. API-тесты — на каждый PR; ловят regression до UI.

Типичные ошибки

Ловушки Моки и стабы (WireMock): ручной запуск Postman-запросов вместо автоматической коллекции в CI (дрейф между доками и реальностью); не валидируют по схеме (клиенты ломаются, когда API тихо добавляет required-поле); игнор форм 4xx error-ответов (клиенты зависят от стабильной структуры ошибки); общая test-среда, мутирующая state между тестами (flake).

Связанные понятия

Полезные ресурсы