【发布时间】:2017-06-23 07:32:13
【问题描述】:
我想对使用HttpClient 的类进行单元测试。我们在类构造函数中注入了HttpClient 对象。
public class ClassA : IClassA
{
private readonly HttpClient _httpClient;
public ClassA(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<HttpResponseMessage> SendRequest(SomeObject someObject)
{
//Do some stuff
var request = new HttpRequestMessage(HttpMethod.Post, "http://some-domain.in");
//Build the request
var response = await _httpClient.SendAsync(request);
return response;
}
}
现在我们要对ClassA.SendRequest 方法进行单元测试。我们将Ms Test 用于单元测试框架,Moq 用于模拟。
当我们尝试模拟 HttpClient 时,它会抛出 NotSupportedException。
[TestMethod]
public async Task SendRequestAsync_Test()
{
var mockHttpClient = new Mock<HttpClient>();
mockHttpClient.Setup(
m => m.SendAsync(It.IsAny<HttpRequestMessage>()))
.Returns(() => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK)));
}
我们如何解决这个问题?
【问题讨论】:
标签: c# unit-testing moq mstest dotnet-httpclient