【发布时间】:2014-07-09 00:12:46
【问题描述】:
我正在调用一个外部 API,并且希望我的 API 可以进行单元测试。为此,我正在尝试包装 HttpClient。我现在只需要一种方法。 这是我的界面。
public interface IHttpClient
{
Task<string> GetStringAsync(string url);
}
这就是我实现它的方式。
公共类 HttpClientWrapper : IHttpClient { 私有只读HttpClient _httpClient;
public HttpClientWrapper()
{
// I could also inject this but I think this will be fine as is.
_httpClient = new HttpClient(new HttpClientHandler(), false);
}
public async Task<string> GetStringAsync(string url)
{
//validate url here
return await _httpClient.GetStringAsync(url);
}
}
我有疑问吗?这是正确的方法吗?设置 bool 参数会导致这里的资源泄漏吗?我读到了一些关于是否必须在每次调用时处理 HttpClient 的相互矛盾的想法。我接受了,不处理的一面,但不是很确定。
如果有一种方法可以在没有包装器的情况下使用 HttpClient 但使 API 可测试,那也很棒。但到目前为止,我没能成功。
谢谢, CleanKoder
【问题讨论】:
标签: httpclient asp.net-web-api