ホームページ > バックエンド開発 > Golang > httptest.Server を使用して、Go でライブ リクエストで HTTP サーバーをテストするにはどうすればよいですか?

httptest.Server を使用して、Go でライブ リクエストで HTTP サーバーをテストするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-03 08:01:30
オリジナル
617 人が閲覧しました

How do you test an HTTP server with live requests in Go using httptest.Server?

Go でのライブ リクエストによる HTTP サーバーのテスト

HTTP サーバーのライブ テストでは、実際の環境でエンドポイントの機能を検証できます。 -世界環境。このアプローチは、サーバーが外部サービスに依存している場合、または複雑なルーティング ロジックを使用している場合に特に役立ちます。

ライブ テストに net/http/httptest.Server を使用する

The net/ Go 標準ライブラリの http/httptest.Server タイプは、テスト目的でライブ HTTP サーバーを作成する方法を提供します。その使用方法は次のとおりです。

<code class="go">// Create a router that will be used for testing.
router := mux.NewRouter()

// Create a test server using the router.
ts := httptest.NewServer(router)

// Send test requests to the server.
newreq := func(method, url string, body io.Reader) *http.Request {
    r, err := http.NewRequest(method, url, body)
    if err != nil {
        t.Fatal(err)
    }
    return r
}

tests := []struct {
    name string
    r    *http.Request
}{
    {name: "1: testing get", r: newreq("GET", ts.URL+"/", nil)},
    {name: "2: testing post", r: newreq("POST", ts.URL+"/", nil)},
}

for _, tt := range tests {
    t.Run(tt.name, func(t *testing.T) {
        resp, err := http.DefaultClient.Do(tt.r)
        defer resp.Body.Close()
        if err != nil {
            t.Fatal(err)
        }
        // Check for expected response.
    })
}</code>
ログイン後にコピー

この例では、Gorilla Mux ルーターを作成し、httptest.NewServer を使用してそのルーターを使用するライブ サーバーを作成します。いくつかのテスト リクエストを定義し、http.DefaultClient を使用してサーバーに送信します。次に、サーバーから受信した応答を検証して、それらが期待と一致していることを確認します。

注: 質問では特に Gorilla Mux について言及していますが、ここで説明するアプローチは、次のようなルーターに適用できます。 http.Handler インターフェースを満たす。

以上がhttptest.Server を使用して、Go でライブ リクエストで HTTP サーバーをテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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