我有一些看起來(lái)像這樣的東西:func (client *MyCustomClient) CheckURL(url string, json_response *MyCustomResponseStruct) bool { r, err = http.Get(url) if err != nil { return false } defer r.Body.Close() .... do stuff with json_response在我的測(cè)試中,我有以下內(nèi)容: func TestCheckURL(t *test.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=UTF-8") fmt.Fprintln(w, `{"status": "success"}`) })) defer ts.Close() json_response := new(MyCustomResponseStruct) client := NewMyCustomClient() // returns instance of MyCustomClient done := client.CheckURL("test.com", json_response)但是,它看起來(lái)好像 HTTP 測(cè)試服務(wù)器正在運(yùn)行,并且它實(shí)際上已發(fā)送到 test.com,正如日志輸出所證明的那樣: Get http:/test.com: dial tcp X.Y.Z.A: i/o timeout我的問(wèn)題是如何正確使用 httptest 包來(lái)模擬這個(gè)請(qǐng)求......我通讀了文檔和這個(gè)有用的SO Answer但我仍然卡住了。
1 回答

慕萊塢森
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
您的客戶端僅調(diào)用您提供的 URL 作為該CheckURL
方法的第一個(gè)參數(shù)。為您的客戶提供測(cè)試服務(wù)器的 URL:
done := client.CheckURL(ts.URL, json_response)
- 1 回答
- 0 關(guān)注
- 189 瀏覽
添加回答
舉報(bào)
0/150
提交
取消