httptest を使用して Go で HTTP 呼び出しをテストする方法
概要
Go での HTTP テストhttptest パッケージを使用すると簡単に実行できます。この記事では、サーバー テストの詳細な例を含め、応答およびサーバー テストに httptest を活用する方法について説明します。
テストの種類
httptest は、次の 2 つのカテゴリのテストを提供します。
応答テスト
応答テストでは、Recorder オブジェクトが応答とその内容をキャプチャします。次のコード スニペットは、応答テストを示しています:
resp := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/3D/header/?", nil) http.DefaultServeMux.ServeHTTP(resp, req)
サーバー テスト
サーバー テストの場合、httptest はサーバーをシミュレートし、使用できる URL を提供します。
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, `{"fake twitter json string"}`) }))
この例では、事前定義された JSON データで応答するサーバーが作成されます。このサーバーの URL は、テスト対象のアプリケーションで使用できます。
例:retrieveTweets での HTTP 呼び出しのテスト
retrieveTweets 関数をテストするには:
func TestIt(t *testing.T){ ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, `{"fake twitter json string"}`) })) defer ts.Close() twitterUrl = ts.URL c := make(chan *twitterResult) go retrieveTweets(c) tweet := <-c if tweet != expected1 { t.Fail() } tweet = <-c if tweet != expected2 { t.Fail() } }
サーバーをモックすることで、retrieveTweets 関数で受信した結果を検証できます。
以上が「httptest」を使用して Go で HTTP 呼び出しを効果的にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。