2017-02-27 75 views
1

我想弄清楚它是否可以使用自定义的HTTP客户端集成测试?集成测试自定义HTTP客户端在网络核心

而是从TESTSERVER

获得客户端实例
Client = Server.CreateClient() 

用自己的实现。 Smthng像:

Client = new DSClient(Server.BaseAddress.AbsoluteUri, Credential); 

当我这样做时,我总是得到404。WAIDW?

+0

您是否在调用继承类中的基构造函数? – john

+0

@john没有。问题的关键是我的客户端是一个包装,它不提供相同的方法,HttpClient的 –

+1

如果Server.CreateClient()是自托管功能的一部分,那么你就需要把它作为基本的HttpClient到您的包装。我相信,自托管功能完全在内存中运行。 – john

回答

0

我面临同样的问题,在我的情况,我不能使用现有的HttpClient的,因为我需要初始化时,它修改HttpClient的。所以我的解决方案是创建一个服务器并使用我自己的HttpClient进行测试。

using(var server = WebHost.CreateDefaultBuilder(new List<string>().ToArray()) 
    .UseEnvironment("Test") 
    .UseStartup<Startup>() 
    .UseKestrel(options => 
    { 
     options.Listen(IPAddress.Loopback, 5000); 
    }) 
    .Build()) 
    { 
     server.Start(); 
     var client = new HttpClient 
     { 
      BaseAddress = new Uri("http://localhost:5000") 
     } 
     var resp = client.GetAsync("test/testme").Result; 
    }