php エディタ Baicao では、開発者が http リクエストを再試行する際のテストに役立つ「httptest」という単体テスト ツールを紹介します。このツールは、さまざまな http リクエストをシミュレートできるだけでなく、コードの安定性と信頼性を確保するためにリクエストを自動的に再試行することもできます。 httptest ツールを使用すると、開発者は http リクエストの単体テストを簡単に行うことができ、ネットワークの不安定性やその他の異常な状況に対処するためにリクエストを簡単に再試行することができます。このツールを使用すると、開発効率が大幅に向上し、エラーの可能性が減少するため、すべての PHP 開発者にとって試してみる価値のあるツールです。
HTTP リクエストをラップし、応答のアンマーシャリングを処理する HttpRequest
というコンポーネントの単体テストを作成しようとしています。最近、このコンポーネントに、最初の試行で「接続が拒否されました」エラーが発生した場合に HTTP リクエストを再試行できる機能を追加しました。
HttpRequest コンポーネントを使用するには、これを 1 回呼び出します: user, err := HttpRequest[User](config)
。 config パラメータには、URL、メソッド、タイムアウト、再試行回数、リクエスト本文など、リクエストを実行するために必要な情報がすべて含まれています。また、応答本文を指定されたタイプ (この場合は User
) のインスタンスにアンマーシャリングします。
この状況で単体テストを作成するのは難しいと思いました。なぜなら、リクエストが「接続が拒否されました」で失敗するためには、呼び出されるポートにリスナーが必要ないからです。問題は、
httptest を使用する場合、
httptest.NewUnstartedServer を使用する場合でも、インスタンスの作成時に常にポートをリッスンすることです。したがって、
httptest インスタンスを作成した後、クライアント コードで「接続が拒否されました」エラーが発生することはありません。
httptest インスタンスを作成するまでは、どのポートでリッスンするかわかりません。
httptest は常にランダムなポートを選択します。プログラムでポートを指定する方法はありません。これは、
httptest インスタンスを作成する前に HttpRequest 呼び出しを行うことができないことを意味します。
newunstartedserver 非常に簡単:
リーリー
リーリー
リスナーを作成するコードは、httptest.newlocallistener から変更されています。
http.roundtripper インターフェイスを実装し、このラウンドトリップを使用して
http.client を作成することです。以下は、
net/ からコピーされた http/client_test.go の例です。
リーリー
以上がhttptest を使用して単体テスト http リクエストを再試行するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。