我想对一个使用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)));
}
我们如何解决这个问题?