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 サイトの他の関連記事を参照してください。