我有一个HttpClientFactory的包装器,它通过HttpClientFactory.Create将默认的DelegatingHandler连接到HttpClient。它会向传出请求添加一些标题等。我需要确保在执行实际请求之前,我的处理程序始终是最后运行的。这是我工厂方法的要点。
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。
答案 0 :(得分:0)
为什么不这样:
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
媒体资源,然后即可进行测试。