РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
982 of 1593 menu

Функция httptest.NewRequest

Функция httptest.NewRequest создает новый HTTP-запрос, который можно использовать в тестах для проверки обработчиков. Первый параметр принимает HTTP-метод (например, "GET", "POST"), второй параметр принимает URL-путь, а третий параметр принимает тело запроса в виде io.Reader или nil, если тело не требуется. Функция возвращает указатель на http.Request, который можно передать в тестируемый обработчик.

Синтаксис

httptest.NewRequest(method, target string, body io.Reader) *http.Request

Пример

Давайте создадим GET-запрос к пути "/users" без тела запроса:

package main import ( "fmt" "net/http" "net/http/httptest" ) func main() { req := httptest.NewRequest("GET", "/users", nil) fmt.Println(req.Method) fmt.Println(req.URL.Path) }

Результат выполнения кода:

"GET" "/users"

Пример

Давайте создадим POST-запрос с JSON-телом для создания нового пользователя:

package main import ( "bytes" "fmt" "net/http" "net/http/httptest" ) func main() { jsonBody := []byte(`{"name":"John","age":30}`) req := httptest.NewRequest("POST", "/users", bytes.NewReader(jsonBody)) fmt.Println(req.Method) fmt.Println(req.URL.Path) fmt.Println(req.Header.Get("Content-Type")) }

Результат выполнения кода:

"POST" "/users" ""

Обратите внимание, что заголовок Content-Type не устанавливается автоматически - его нужно добавлять вручную при необходимости.

Пример

Давайте создадим запрос с пользовательскими заголовками:

package main import ( "fmt" "net/http" "net/http/httptest" ) func main() { req := httptest.NewRequest("GET", "/profile", nil) req.Header.Set("Authorization", "Bearer token123") req.Header.Set("X-Request-ID", "12345") fmt.Println(req.Header.Get("Authorization")) fmt.Println(req.Header.Get("X-Request-ID")) }

Результат выполнения кода:

"Bearer token123" "12345"

Пример

Давайте создадим запрос с параметрами в URL:

package main import ( "fmt" "net/http" "net/http/httptest" ) func main() { req := httptest.NewRequest("GET", "/search?q=golang&page=2", nil) query := req.URL.Query() fmt.Println(query.Get("q")) fmt.Println(query.Get("page")) }

Результат выполнения кода:

"golang" "2"

Смотрите также

  • структуру httptest.ResponseRecorder,
    которая используется для записи ответов обработчиков в тестах
  • пакет httptest,
    который предоставляет инструменты для тестирования HTTP-серверов
  • функцию testing.T.Run,
    которая запускает подтесты для организации тестов
  • функцию testing.T.Log,
    которая выводит отладочную информацию во время выполнения теста
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить