Как проверить http запросы в go - PullRequest
0 голосов
/ 08 октября 2018

У меня есть пакет go, который в основном является оболочкой для Python API.Я не уверен, как проверить ошибки для http.NewRequest, client.Do и ioutil.ReadAll.Я знаю, что httptest существует, но я довольно новичок и не смог заставить его работать.Любая помощь будет оценена!

func DeleteApp(platform string, hostname string, header string) error {

if platform == "" || hostname == "" {
    fmt.Printf("[DELETE APP] Platform and hostname can not be empty strings")
    return errors.New("[DELETE APP] Platform and hostname can not be empty strings")
}
url := fmt.Sprintf(baseURL+"delete-app/%s/%s", platform, hostname)

// Create client & set timeout
client := &http.Client{}
client.Timeout = time.Second * 15

// Create request
req, err := http.NewRequest("DELETE", url, nil)
if err != nil {
    fmt.Printf("[DELETE APP] Could not create request : %v", err)
    return err
}

//check for optional header
if header != "" {
    req.Header.Add("X-Fields", header)
}

// Fetch Request
resp, err := client.Do(req)
if err != nil {
    fmt.Printf("[DELETE APP] Could not fetch request : %v", err)
    return err
}
defer resp.Body.Close()

//Read Response Body
respBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
    fmt.Printf("[DELETE APP] Could not read response body : %v", err)
    return err
}

fmt.Println("response Status : ", resp.Status)
fmt.Println("response Headers : ", resp.Header)
fmt.Println("response Body : ", string(respBody))

return nil

}

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете использовать httptest.NewServer

func TestDeleteApp(t *testing.T) {
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "Hello, client")
    }))
    defer ts.Close()

    baseURL = ts.URL + "/"

    DeleteApp("platform", "hostname", "header")

}

Это переписывает ваш глобальный baseURL, поэтому он не может быть константой (вы можете просто передать его в качестве параметра).Вы можете написать тестовые утверждения в http.HandlerFunc или на основе ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...