当HttpServer看起来足够时,为什么我应该在集成测试中使用HttpClient

时间:2014-01-11 14:55:30

标签: asp.net-web-api integration-testing

我在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来处理相同的管道。

您怎么看?

1 个答案:

答案 0 :(得分:3)

嗯,会发生什么HttpClient扩展HttpMessageInvoker并增加额外的功能......基本上它是一个更丰富的对象。如果您需要执行各种与http相关的操作,最好使用HttpClient,因为它已经实现了许多常见操作,例如POSTPUTDELETE请求等

顺便说一句,要回答你的问题,如果HttpMessageInvokerHttpServer对你来说已经足够了,因为它们提供了运行集成测试所需的功能,那么选择一个就没有实际的好处因为没有任何性能上的提升。除非如上所述,否则您的测试需要由HttpMessageInvoker基类

实现的更具体的功能