Загрузка…
Загрузка…
Обработчики HTTP в Go тестируются изолированно, без реального сетевого сокета, с использованием httptest. Цель — протестировать контракт уровня HTTP: статус, заголовки, тело ответа, обработку ошибок и пограничные сценарии.
Создайте запрос через httptest.NewRequest(...).
Создать рекордер через httptest.NewRecorder().
Обработчик вызова: handler.ServeHTTP(rec, req).
Проверьте:
rec.Code (код состояния);
заголовки;
тело (JSON/схема/сообщение).
Счастливый путь (правильный запрос, ожидаемый ответ).
Ошибки проверки (неполные/неверные полезные данные, параметры запроса).
Методы HTTP (GET/POST/PUT/DELETE + 405, если метод не разрешен).
Ошибки зависимостей (сервис/репозиторий возвращает ошибку).
Контекстные скрипты (таймаут/отмена, если логика это поддерживает).
Экспортируйте бизнес-логику из обработчика на уровень сервиса.
В тестах обработчиков моделируйте/подделывайте зависимости сервисов.
Тестируйте сам HTTP-контракт, а не внутреннюю реализацию.
Исправьте Content-Type.
Структура ответа JSON.
Соответствие кодов статуса ошибкам домена.
Отсутствие утечки конфиденциальной информации в теле ошибки.
Тест HTTP-обработчика в Go — это проверка поведения конечной точки как черного ящика: входящий запрос → очистить вывод HTTP. httptest предоставляет быстрый, детерминированный и достаточно точный инструмент для такого тестирования контрактов.
Обработчики HTTP в Go тестируются изолированно, без реального сетевого сокета, с использованием httptest.
