ホームページ  >  記事  >  バックエンド開発  >  記事の内容に適した質問ベースのタイトルをいくつか示します。 * Go でレスポンスボディの読み取りエラーを強制する方法は? * Go HTTP クライアント テストでのネットワーク エラーのシミュレーション: 読み取り失敗の強制

記事の内容に適した質問ベースのタイトルをいくつか示します。 * Go でレスポンスボディの読み取りエラーを強制する方法は? * Go HTTP クライアント テストでのネットワーク エラーのシミュレーション: 読み取り失敗の強制

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 17:21:29869ブラウズ

Here are a few question-based titles that fit the article's content:

* How to Force a Read Error on the Response Body in Go?
* Simulating Network Errors in Go HTTP Client Testing: Forcing Read Failures
* Testing Your Go HTTP Client: Triggering Read Erro

Go で応答本文の読み取りエラーを強制する

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

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