レスポンスボディ読み取り時の失敗の強制
Go で HTTP クライアント ラッパーの完全性をテストするには、レスポンスボディ読み取り時のエラーなど、さまざまなシナリオをシミュレートする必要があります。レスポンスボディ。提供されているコード スニペットは、カスタム ハンドラーを使用した偽のサーバー セットアップを想定しています。応答本文の読み取り失敗を強制するには、ハンドラーを変更する必要があります。
応答本文のドキュメントの確認
Response.Body のドキュメントによると、読み取り操作は、次のシナリオでエラーを返す可能性があります。
無効なエラーによる失敗の誘発HTTP レスポンス
失敗を誘発する最も簡単な方法は、無効な HTTP レスポンスを生成することです。たとえば、Content-Length ヘッダーをゼロ以外の値に設定し、実際のコンテンツを送信しないと、クライアントが本文を読み取ろうとしたときに予期しない EOF エラーが発生します。
失敗したハンドラーの例
これを行うハンドラーの例を次に示します。
<code class="go">handler := func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "1") }</code>
予期されるエラー
クライアントがこのハンドラーから本文を読み取ろうとすると、次のエラーが発生します:
Unable to read from body unexpected EOF
このアプローチは、ラッパーの ioutil.ReadAll 操作を事実上強制的に失敗させ、ネットワーク通信中に発生する可能性のある現実的なエラー シナリオをシミュレートします。
以上がGo HTTP クライアント テストでレスポンス ボディ読み取りエラーをシミュレートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。