Golang — поднятие тест сервера при unit тестах

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.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *