繁体   English   中英

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

[英]How can I use stub to mock httpclient in 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;
    }
}

为什么不能仅使IHttpClient非静态并摆脱工厂呢?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM