9

を使用する一連の統合テストを実行しています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つの質問につながります。

  1. HttpWebRequest/を使用HttpWebResponseすることは、このシナリオに適していますか?
  2. たとえそうだとしても、HttpClient非同期に開始されたリクエストのエラーを処理するための最良の方法は何ですか?
4

2 に答える 2