如何在C#中使用存根来模拟httpclient

时间:2017-06-23 12:12:51

标签: c#

如何在c#代码中进行单元测试时使用存根来模拟HTTP客户端?

我不想使用Moq,因为我有一个方法来创建静态但不是虚拟的http客户端实例。

代码:

public static class HttpClientFactory
{
    public static IHttpClient httpClient;

    public static IHttpClient CreateHttpClient()
    {
        if(httpClient == null)
            httpClient = new HttpClient();
        return httpClient;
    }
}

1 个答案:

答案 0 :(得分:2)

为什么你不能让你的IHttpClient非静态并摆脱工厂?

public interface IHttpClient {}
public class HttpClient : IHttpClient {}

只需模拟IHttpClient并实现方法,然后将其注入(在构造函数或属性中)

public class SomeStuff 
{
    public IHttpClient Client { get; }
    public SomeStuff(IHttpClient client) 
    {
        Client = client;
    }
}