2016-06-13 10 views
0

Ich habe etwas zu verspotten, die wie so aussieht:korrekt httptest mit Antworten

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 

Und in meinem Test, ich habe folgendes:

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) 

Aber es scheint nicht, als ob die HTTP Testserver funktioniert und dass es tatsächlich geht, um test.com, wie sie in der Protokollausgabe belegt:

Get http:/test.com: dial tcp X.Y.Z.A: i/o timeout 

Meine Frage ist, wie t o Verwenden Sie ordnungsgemäß das HTTPtest-Paket, um diese Anfrage zu verspotten ... Ich lese the docs und dies hilfreich SO Answer, aber ich bin immer noch fest.

Antwort

3

Ihr Client ruft nur die URL auf, die Sie als erstes Argument für die Methode CheckURL angegeben haben. Geben Sie Ihrem Client die URL Ihres Testservers:

done := client.CheckURL(ts.URL, json_response) 
+0

Ich habe dieses entscheidende Bit fehlt, das Lesen der Dokumente/Beispiele das macht Sinn. – thomascirca

Verwandte Themen