を使用する一連の統合テストを実行していますSystem.Net.HttpClient
。これらのテストの「行為」セクションのほとんどは、次の一般的な形式を使用しています。
// Arrange
// Do some stuff
// Act
var download = _client
.GetStringAsync(testUrl)
.Result;
// Assert
// Does "download" contain what I expected?
ただし、これらのテストを断続的に実行すると、次のような結果が得られます。
System.AggregateException : One or more errors occurred.
----> System.Threading.Tasks.TaskCanceledException : A task was canceled.
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task`1.get_Result()
usingHttpClient
は非同期で開始するためのものであり、常に待機するように指示する統合テスト シナリオには完全に適合しないことを認識しています。したがって、これは多少関連する2つの質問につながります。
HttpWebRequest
/を使用HttpWebResponse
することは、このシナリオに適していますか?- たとえそうだとしても、
HttpClient
非同期に開始されたリクエストのエラーを処理するための最良の方法は何ですか?