HTTP クライアント ラッパーの徹底的なテストを確実に行うには、応答本文からの読み取りを強制的に失敗させる必要があります。 。 httptest を使用すると、偽のサーバーをセットアップし、レスポンス ライターを変更することでこれを実現できます。
Response.Body のドキュメントを確認すると、ネットワーク接続が失敗したり、ネットワーク接続が失敗したりすると、そこから読み取るとエラーが返される可能性があることがわかります。サーバーは応答を終了します。
このエラーを引き起こす簡単な方法は、無効な HTTP 応答を生成することです。 1 つの方法は、コンテンツの長さについて「嘘をつく」ことです。
<code class="go">handler := func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "1") }</code>
このハンドラーは、1 バイトの本文があると主張していますが、何も送信しません。クライアント側でそこから 1 バイトを読み取ろうとすると、読み取りは失敗し、次のようなエラー メッセージが表示されます。
Unable to read from body unexpected EOF
この手法を使用すると、応答本文に読み取りエラーを効果的に強制的に適用できます。実際の使用状況で遭遇する可能性のある潜在的なシナリオ。リソースのリークを避けるために、読み取り後は必ず応答本文を閉じてください。
以上が記事の内容に適した質問ベースのタイトルをいくつか示します。 * Go でレスポンスボディの読み取りエラーを強制する方法は? * Go HTTP クライアント テストでのネットワーク エラーのシミュレーション: 読み取り失敗の強制の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。