У меня есть функция:
func HTTPGet(url string) (*http.Response, error) {
resp, err := getClient().Get(url)
return resp, err
}
а функция getClient:
var defaultClient *http.Client
func getClient() *http.Client {
if defaultClient == nil {
defaultClient = &http.Client{
Timeout: time.Second * 60,
Transport: newDefaultTransport(),
}
}
return defaultClient
}
Мне нужно написать тестовый пример для HTTPGet для url: «/ catalog / v6 / Provider».
Я написал тестовый пример для URL-адреса по умолчанию, например:
func Handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, Client")
}
func TestHTTPGet(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(Handler))
defer ts.Close()
mockServerURL := ts.URL
resp, err := HTTPGet(mockServerURL)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
assertEquals("Hello, Client", fmt.Sprintf("%s", body), t)
}
Но как написать тестовый сценарий для конкретного URL.
Я думаю, что OP хочет проверить, что функция HTTPGet отправляет запрос с переданным URL-адресом.
getClient, кажется, не имеет отношения к этому вопросу. Это верно?





Вы можете прочитать и сохранить запрошенный URL следующим образом:
var receivedURL string
func Handler(w http.ResponseWriter, r *http.Request) {
receivedURL = r.RequestURI
fmt.Fprintf(w, "Hello, Client")
}
А потом просто заявите об этом:
func TestHTTPGet(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(Handler))
defer ts.Close()
mockServerURL := ts.URL
url := fmt.Sprintf("%s%s", mockServerURL, '/path/to/test')
resp, err := HTTPGet(mockServerURL)
defer resp.Body.Close()
assertEquals(receivedURL, url, t)
}
Я не понимаю вашего вопроса. Что ты пробовал? Какая у вас конкретная проблема?