ホームページ > バックエンド開発 > Golang > 「httptest」を使用して Go で HTTP 呼び出しを効果的にテストするにはどうすればよいですか?

「httptest」を使用して Go で HTTP 呼び出しを効果的にテストするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-15 08:15:15
オリジナル
564 人が閲覧しました

How to Effectively Test HTTP Calls in Go using `httptest`?

httptest を使用して Go で HTTP 呼び出しをテストする方法

概要

Go での HTTP テストhttptest パッケージを使用すると簡単に実行できます。この記事では、サーバー テストの詳細な例を含め、応答およびサーバー テストに httptest を活用する方法について説明します。

テストの種類

httptest は、次の 2 つのカテゴリのテストを提供します。

  • レスポンス テスト: から受信した HTTP レスポンスを検証します。 request.
  • サーバー テスト: サーバーをエミュレートして、テスト対象のアプリケーションとの HTTP 対話をテストします。

応答テスト

応答テストでは、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート