Asp.net web api 当HttpServer看起来足够强大时,我为什么要在集成测试中使用HttpClient呢
我在WebAPI集成测试中基本上只使用HttpServer,这似乎足够了,因为我的WebAPI控制器动作是通过请求触发的Asp.net web api 当HttpServer看起来足够强大时,我为什么要在集成测试中使用HttpClient呢,asp.net-web-api,integration-testing,Asp.net Web Api,Integration Testing,我在WebAPI集成测试中基本上只使用HttpServer,这似乎足够了,因为我的WebAPI控制器动作是通过请求触发的 var _server = new HttpServer(config); var _invoker = new HttpMessageInvoker(_server); var response =_invoker.SendAsync(request, new CancellationToken()).Result; 为什么我仍然看到这么多人在创建HttpClient,比
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处理相同的管道
你觉得怎么样?好吧,发生的事情是
HttpClient
扩展了HttpMessageInvoker
并添加了额外的功能…基本上它是一个更丰富的对象。如果您需要执行各种与http相关的操作,最好使用HttpClient
,因为它已经实现了许多常见操作,如POST
、PUT
和DELETE
请求等
顺便说一句,为了回答您的问题,如果
HttpMessageInvoker
和HttpServer
对您来说足够了,因为它们提供了运行集成测试所需的功能,那么选择其中一个就没有实际好处,因为没有任何性能提升。除非,如上所述,您的测试需要由HttpMessageInvoker
基类实现的更具体的功能。哦,是的,HttpMessageInvoker实际上只有sendsync。。。不管怎样。。。也许明天我会发现,如果没有HttpClient,我就无法发送数据了,呵呵。我退了一步,不得不再次询问,因为=>当仅使用HttpServer时,我知道我没有DeleteAsync/PostAsync等。。。但是我可以有一个带有请求对象的.sendaync,在这里我可以定义像Delete/Post这样的Http方法。这不是一个替代品吗?对于HttpClient?所以我开始认为HttpClient只是一个方便的助手?