如何在c#代码中进行单元测试时使用存根来模拟HTTP客户端?
我不想使用Moq,因为我有一个方法来创建静态但不是虚拟的http客户端实例。
代码:
public static class HttpClientFactory
{
public static IHttpClient httpClient;
public static IHttpClient CreateHttpClient()
{
if(httpClient == null)
httpClient = new HttpClient();
return httpClient;
}
}
答案 0 :(得分:2)
为什么你不能让你的IHttpClient
非静态并摆脱工厂?
public interface IHttpClient {}
public class HttpClient : IHttpClient {}
只需模拟IHttpClient
并实现方法,然后将其注入(在构造函数或属性中)
public class SomeStuff
{
public IHttpClient Client { get; }
public SomeStuff(IHttpClient client)
{
Client = client;
}
}