func TestHTTP(t *testing.T) { go func() { serverMux := http.NewServeMux() serverMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Pong!") }) err := http.ListenAndServe(":8082", serverMux) if err != nil { panic("ListenAndServe: " + err.Error()) } }() URL = "http://localhost:8082" assert.NoError(t, myTestServerFunc()) } ... ... ... func myTestServerFunc() err { // here your business logic which calls remote hosts return nil }
При помощи данного сниппета мы можем зарегистрировать нужные нам http роуты для теста и запустить в отдельной go-рутине минимальный веб сервер.
Данная техника полезна при тестировании различных HTTP запросов без вовлечения внешних ресурсов. Тем самым мы можем проверить наш код на обработку ошибок, таймаутов или различных body response.