ホームページ >バックエンド開発 >Golang >Go HTTP クライアント テストでレスポンス ボディ読み取りエラーをシミュレートする方法

Go HTTP クライアント テストでレスポンス ボディ読み取りエラーをシミュレートする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-31 17:21:30942ブラウズ

How to Simulate Response Body Read Errors in Go HTTP Client Testing?

レスポンスボディ読み取り時の失敗の強制

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。