集成测试HttpClient实例的DelegatingHandlers

时间:2014-09-22 21:20:40

标签: .net rest integration-testing dotnet-httpclient

我有一个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。

1 个答案:

答案 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媒体资源,然后即可进行测试。