2016-09-23 5 views
1

テストしたいダイナミックWebサイトにリクエストを送信するコードがあります。明らかにテストはいつでも誰でも実行する必要があるので、REST APIを実際に使用するのではなく、テスト目的で* http.Responseにjson文字列を入れることが可能です。Goでテスト目的で* http.Responseにjson文字列をハードコードする方法

コード例:

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

あなたはそれにするためにio.Readerにあなたが持っているデータを回し、そしてNopCloserio/ioutilから)するbytes.Bufferを使用したいですio.ReadCloser

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

[]byteにjsonがある場合は、NewBufferStringの代わりにNewBufferを使用してください。

+0

経由で読むことができます。この場合のjsonは文字列ですか、もしそうなら、jsonをどのようにハードコードするのですか? (これはjson – user6586806

+0

@ user6586806の中に複数の引用符があるので、すでにJSON文字列があることを暗示しています)とにかく、生の文字列(この\ 'のように' \ ')を使うことができます。 – hobbs

関連する問題