.net 集成测试HttpClient实例的DelegatingHandler
我在HttpClientFactory周围有一个包装器,它通过HttpClientFactory.Create将默认的DelegatingHandler连接到HttpClient。它添加了一些标题。。等发送请求。我需要确保在发出实际请求之前,我的处理程序总是最后一个运行的。这是我工厂方法的要点.net 集成测试HttpClient实例的DelegatingHandler,.net,rest,integration-testing,dotnet-httpclient,.net,Rest,Integration Testing,Dotnet Httpclient,我在HttpClientFactory周围有一个包装器,它通过HttpClientFactory.Create将默认的DelegatingHandler连接到HttpClient。它添加了一些标题。。等发送请求。我需要确保在发出实际请求之前,我的处理程序总是最后一个运行的。这是我工厂方法的要点 public static HttpClient Create(params DelegatingHandler[] handlers) { var handlerList
public static HttpClient Create(params DelegatingHandler[] handlers)
{
var handlerList = handlers.ToList();
handlerList.Add(new ModuleClientHandler());
return HttpClientFactory.Create(handlerList.ToArray());
}
这是可行的,但我想围绕我的期望编写一些测试。如何使用HttpServer和HttpClient的现有实例来实现这一点
将HttpServer传递到处理程序列表将不起作用,因为它将在我的ModuleClientHandler处理程序之前连接,并在处理程序运行之前返回HttpResponse。为什么不这样做:
public static class HandlerHelper
{
public static HttpClientHandler Server;
public static HttpClient Create(params DelegatingHandler[] handlers)
{
var handlerList = handlers.ToList();
handlerList.Add(new ModuleClientHandler());
if (Server == null)
{
return HttpClientFactory.Create(handlerList.ToArray());
}
else
{
return HttpClientFactory.Create(Server, handlerList.ToArray());
}
}
}
只需将您的HttpServer
实例分配给Server
属性,然后就可以进行测试了