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

`httptest` パッケージを使用して Go で HTTP 呼び出しを効果的にテストするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-16 09:25:11
オリジナル
656 人が閲覧しました

How to Effectively Test HTTP Calls in Go Using the `httptest` Package?

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

Go では、httptest パッケージを使用して HTTP 呼び出しをテストする便利な方法が提供されます。アプリケーションの HTTP 機能を徹底的に検査するために、レスポンス テストとサーバー テストの両方が提供されます。

レスポンス テスト

レスポンス テストは、レスポンス自体の検証に重点を置いています。たとえば、応答のステータス コード、ヘッダー、コンテンツを確認できます。以下に例を示します。

func TestHeader3D(t *testing.T) {
    resp := httptest.NewRecorder()
    // ... setup the request with headers and parameters ...
    http.DefaultServeMux.ServeHTTP(resp, req)
    // ... assert the response body and content type ...
}
ログイン後にコピー

サーバー テスト

サーバー テストでは、対照的に、ルートやハンドラーを含む HTTP サーバー全体をテストできます。このアプローチは、アプリケーションを介したリクエストのフローをテストする場合に役立ちます。 httptest.NewServer() メソッドを使用した例を次に示します。

func TestIt(t *testing.T) {
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // ... your handler setup and response ...
    }))
    defer ts.Close()
    // ... setup your requests and make assertions based on the responses ...
}
ログイン後にコピー

特定のケースでは、サーバー テストを利用して、予測可能な応答で Twitter 検索 API を模擬できます。これにより、実際の HTTP 呼び出しを行わずに関数をテストできます。

func TestRetrieveTweets(t *testing.T) {
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Set up your mock response for the Twitter API ...
    }))
    defer ts.Close()
    twitterUrl = ts.URL
    c := make(chan *twitterResult)
    go retrieveTweets(c)
    // ... assert the results you receive in the `c` channel ...
}
ログイン後にコピー

retrieveTweets 関数の r パラメーターはすでにポインターであるため、json.Unmarshal 内でポインターとして渡す必要がないことに注意してください。 .

以上が`httptest` パッケージを使用して Go で HTTP 呼び出しを効果的にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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