单元测试 – Stubbing或Mocking ASP.NET Web API HttpClient
|
我在一个项目中使用新的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 – SQL Server应用程序角色,性能命中
- asp.net-mvc – Umbraco 7自定义cookie
- asp.net-mvc-3 – 添加属性以选择列表选项
- asp.net – 如何在Json中使用Gson将对象类型包含在asmx web
- asp.net-mvc – ASP.NET MVC中的动态(运行时生成)表单
- asp.net-mvc – Asp.Net Mvc – 在ActionResult.Execute之前
- asp.net – 如何告诉RadioButtonList不生成表
- asp.net-mvc – 如何使用我的Error.cshtml视图中的过滤器放
- ASP.net HttpRequest上的静态HttpClient线程安全
- asp.net-mvc – 单个控制器的MVC多个视图
