【发布时间】:2017-02-27 08:13:02
【问题描述】:
我想弄清楚是否可以在集成测试中使用自定义 HTTP 客户端?
而不是从 TestServer 获取客户端实例
Client = Server.CreateClient()
使用我自己的实现。喜欢:
Client = new DSClient(Server.BaseAddress.AbsoluteUri, Credential);
当我这样做时,我不断收到 404.WAIDW?
【问题讨论】:
-
您是否在继承类中调用基构造函数?
-
@john 不。关键是我的 Client 是一个包装器,它不提供与 HttpClient 相同的方法
-
如果 Server.CreateClient() 是自托管功能的一部分,那么您需要将其作为基础 HttpClient 传递到您的包装器中。我相信自托管功能完全在内存中运行。
-
显然这并不意味着您需要公开与客户端提供的相同方法,但我认为您必须在包装方法中使用它。你想达到什么目的?是否可以通过创建自己的 DelegatingHandler 来完成?
-
@john 是的,你救了我。
Server = new TestServer(webHostBuilder); TestClient = Server.CreateClient(); Client = new DSClient(TestClient);不得不用新的构造函数修改 DSClient 类,但它可以工作。谢谢
标签: c# integration-testing asp.net-core-webapi