我在Web API集成测试中基本上做的只是使用HttpServer,这似乎已经足够了,因为我的Web API控制器操作是通过请求触发的。
var _server = new HttpServer(config);
var _invoker = new HttpMessageInvoker(_server);
var response =_invoker.SendAsync(request, new CancellationToken()).Result;
为什么我仍然会看到很多人创建HttpClient,如:
using(var client = new HttpClient(server))
{
var response = client.SendAsync(request,...);
}
使用HttpClient执行请求的更好理由是什么?
在我看来,当我想测试我的代码对我的Web API管道的行为时,HttpServer看起来很好,至少使用HttpServer单独或使用HttpClient来处理相同的管道。
您怎么看?
答案 0 :(得分:3)
嗯,会发生什么HttpClient
扩展HttpMessageInvoker
并增加额外的功能......基本上它是一个更丰富的对象。如果您需要执行各种与http相关的操作,最好使用HttpClient
,因为它已经实现了许多常见操作,例如POST
,PUT
和DELETE
请求等
顺便说一句,要回答你的问题,如果HttpMessageInvoker
和HttpServer
对你来说已经足够了,因为它们提供了运行集成测试所需的功能,那么选择一个就没有实际的好处因为没有任何性能上的提升。除非如上所述,否则您的测试需要由HttpMessageInvoker
基类