Senior
28
How do you usually test HTTP handlers in Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для тестирования HTTP-хендлеров в Go обычно используют пакет net/http/httptest, который позволяет создавать тестовые HTTP-запросы и записывать ответы.
Пример простого теста хендлера:
func TestMyHandler(t *testing.T) {
req := httptest.NewRequest("GET", "/path", nil)
w := httptest.NewRecorder()
MyHandler(w, req)
res := w.Result()
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
t.Errorf("expected status 200 OK, got %d", res.StatusCode)
}
body, _ := io.ReadAll(res.Body)
expected := "Hello, world!"
if string(body) != expected {
t.Errorf("unexpected body: got %q, want %q", string(body), expected)
}
}
Такой подход позволяет изолированно проверить логику хендлера без запуска полноценного сервера. Можно создавать разные запросы с нужными параметрами, заголовками и телом, а затем проверять статус, заголовки и тело ответа.