我正在运行一套使用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
是为了启动异步操作,并不适合我们总是告诉它等待的集成测试场景。所以这让我想到了两个有点相关的问题:
- 使用
HttpWebRequest
/HttpWebResponse
更适合这种情况吗? - 即使是这样,
HttpClient
处理异步启动的请求错误的最佳方法是什么?