我正在编写一个单元测试方法,该方法在我测试的条件下练习的代码应该会引发一个带有特定响应消息的HttpResponseException。为什么HttpResponseException只允许其消息被读取为异步?
我的测试方法代码中的相关部分看起来是这样的:
try
{
MyClassBeingTested.MyWebServiceMethodBeingTested(myParameters);
}
catch (HttpResponseException ex)
{
string errorMessage = await ex.Response.Content.ReadAsStringAsync();
Assert.IsTrue(errorMessage.Contains("My expected error message string"));
return;
}
Assert.Fail("Expected HttpResponseException didn't get thrown");
此代码的工作,并测试通过。
但是,我想更好地理解为什么我的代码读取错误消息需要以这种方式构建。 HttpResponseException类仅提供对其消息的异步访问。因此,我需要通过ReadAsStringAsync()
来获取消息,而不是通过做类似ex.Response.Content.Message
的事情来同步获取消息。
我觉得我可能会错过为什么HttpResponseException类的工作方式。 HttpResponseException不提供对其响应消息的同步访问的原因是什么?
“HTTP流的内容总是被异步读取” - 这是我的关键点。谢谢! :-) –