2014-09-22 106 views
0

我有一个HttpClientFactory的包装器,通过HttpClientFactory.Create将默认的DelegatingHandler连接到HttpClient。它增加了一些标题..等出口的请求。我需要确保我的处理程序始终是实际请求发出之前运行的最后一个处理程序。这是我工厂方法的要点。集成测试HttpClient实例的DelegatingHandlers

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

为什么不能是这样的:

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属性,然后你可以测试。