Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api 当HttpServer看起来足够强大时,我为什么要在集成测试中使用HttpClient呢_Asp.net Web Api_Integration Testing - Fatal编程技术网

Asp.net web api 当HttpServer看起来足够强大时,我为什么要在集成测试中使用HttpClient呢

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,比

我在WebAPI集成测试中基本上只使用HttpServer,这似乎足够了,因为我的WebAPI控制器动作是通过请求触发的

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只是一个方便的助手?