单元测试 – Stubbing或Mocking ASP.NET Web API HttpClient
发布时间:2020-12-15 18:52:57 所属栏目:asp.Net 来源:网络整理
导读:我在一个项目中使用新的Web API位,我发现我不能使用正常的HttpMessageRequest,因为我需要添加客户端证书到请求。因此,我使用HttpClient(所以我可以使用WebRequestHandler)。这一切都很好,除了它不是残桩/模拟友好,至少对于犀牛Mocks。 我通常会创建一个
我在一个项目中使用新的Web API位,我发现我不能使用正常的HttpMessageRequest,因为我需要添加客户端证书到请求。因此,我使用HttpClient(所以我可以使用WebRequestHandler)。这一切都很好,除了它不是残桩/模拟友好,至少对于犀牛Mocks。
我通常会创建一个环绕HttpClient的包装服务,我会改用,但我想避免这种可能,因为有很多方法,我需要包装。我希望我有缺少的东西 – 任何建议如何存根HttpClient? 解决方法
我使用Moq,我可以stub出HttpClient。我认为这一点对于犀牛Mock(我没有试过自己)。
如果你只是想存根HttpClient下面的代码应该工作: var stubHttpClient = new Mock<HttpClient>(); ValuesController controller = new ValuesController(stubHttpClient.Object); 如果我错了,请纠正我。我想你在这里指的是在HttpClient中存根成员。 最流行的隔离/模拟对象框架将不允许您在非虚拟成员上存根/设置 stubHttpClient.Setup(x => x.BaseAddress).Returns(new Uri("some_uri"); 你还提到你想避免创建一个包装,因为你会包装很多HttpClient成员。不清楚为什么你需要包装大量的方法,但你可以轻松地包装所需的方法。 例如 : public interface IHttpClientWrapper { Uri BaseAddress { get; } } public class HttpClientWrapper : IHttpClientWrapper { readonly HttpClient client; public HttpClientWrapper() { client = new HttpClient(); } public Uri BaseAddress { get { return client.BaseAddress; } } } 其他的选项,我认为可能会对你有好处(大量的例子,所以我不会写代码) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 看起来像链接的按钮
- identity – 更改MVC 5中的用户名
- asp.net-mvc – 在哪里提出持久性依赖的域事件 – 服务,存储
- asp.net-mvc – 在MVC4中路由具有扩展名的url将无法正常工作
- ILifetimeScope的autofac DependencyResolutionException用
- asp.net-mvc – Asp.Net自定义路由和自定义路由并在控制器之
- asp.net – Webservices可以作为单身人士引起不同用户的问题
- asp.net-mvc-routing – 如何检查给定路径是否存在路由(ASP
- ASP.net MVC ASP.net Identity Seeding角色和用户
- asp.net – 评论.aspx
推荐文章
站长推荐
- asp.net-mvc-3 – 命名空间’Sitecore’中不存在
- asp.net-mvc – 具有服务层和存储库层的ASP.NET
- asp.net通过kerberos集成windows身份验证到sql s
- asp.net-mvc-3 – RedirectResult Object作为URL
- Asp.net MVC实现生成Excel并下载功能
- asp.net-web-api – 将List转换为JSon并在Web AP
- asp.net-mvc – TextBoxFor中限制为2位小数
- asp.net – RenderBody和RenderSection之间的区别
- asp.net – 如何让我的转发器的Itemcommand事件不
- asp.net-mvc – 如何摆脱ASP.NET MVC中的HTML错误
热点阅读