我有一些问题试图包装我的代码用于单元测试.问题是这样的.我有接口IHttpHandler:
public interface IHttpHandler
{
HttpClient client { get; }
}
Run Code Online (Sandbox Code Playgroud)
而使用它的类,HttpHandler:
public class HttpHandler : IHttpHandler
{
public HttpClient client
{
get
{
return new HttpClient();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后是Connection类,它使用simpleIOC来注入客户端实现:
public class Connection
{
private IHttpHandler _httpClient;
public Connection(IHttpHandler httpClient)
{
_httpClient = httpClient;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个单元测试项目,有这个类:
private IHttpHandler _httpClient;
[TestMethod]
public void TestMockConnection()
{
var client = new Connection(_httpClient);
client.doSomething();
// Here I want to somehow create a mock instance of the http client
// Instead of the …Run Code Online (Sandbox Code Playgroud) 我在项目中使用新的Web API位,我发现我无法正常使用HttpMessageRequest,因为我需要将客户端证书添加到请求中.结果,我正在使用HttpClient(所以我可以使用WebRequestHandler).这一切都很好,除了它不是存根/模拟友好,至少对于Rhino Mocks.
我通常会创建一个HttpClient我将使用的包装器服务,但我想尽可能避免这种情况,因为我需要包装很多方法.我希望我遗漏了一些东西 - 关于如何存根的任何建议HttpClient?