2016-09-23 43 views
1

我有一些代碼,使得請求動態網站,我想測試。很顯然,測試需要隨時由任何人運行,所以不是實際使用REST API,而是爲了測試目的,可以將json字符串放入* http.Response中。我怎樣才能硬編碼一個JSON字符串到一個* http.Response爲測試目的在Go

示例代碼:

func get (c *http.Response, err error) (string, error) { 
    //code 
} 

測試文件:

func TestGet(t *testing.T) { 
    //code to have put json string for test *http.Response 
    get(???, nil) 

} 
+0

你想以某種方式將一個json字符串解組到一個'http.Response'對象嗎?您可以通過[http.ReadResponse](https://golang.org/pkg/net/http/#ReadResponse)讀取已保存的響應 – JimB

回答

2

你想用一個bytes.Buffer把你變成一個io.Reader的數據,並NopCloser(從io/ioutil)使它成爲io.ReadCloser

r := &http.Response{ 
    Status: "200 OK", 
    StatusCode: 200, 
    // etc., lots more fields needed here. 
    Body: ioutil.NopCloser(bytes.NewBufferString(json)) 
} 

如果你有你的json在[]byte,然後使用NewBuffer而不是NewBufferString

+0

在這種情況下,json是一個字符串,如果是的話,我該如何硬編碼json作爲一個字符串(因爲它將有多個引號json – user6586806

+0

@ user6586806你的問題意味着你已經有了一個JSON字符串。無論如何,你可以使用原始字符串('\'就像這個''')引號。 – hobbs

相關問題