У меня есть метод, который содержит HttpClientFactory
, который создает HttpClient
. Метод вызывает в нем метод SendAsync
. Мне нужно манипулировать методом SendAsync
, чтобы отправить мне сообщение об успешном завершении, что бы оно ни использовало в качестве аргумента.
Я хочу проверить этот метод
public class TestService
{
private readonly IHttpClientFactory _clientFactory;
public TestService(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
public async Task<bool> TestMethod(string testdata)
{
var message = new HttpRequestMessage(); //SIMPLIFIED CODE
var client = _clientFactory.CreateClient();
var response = await client.SendAsync(message);
if(response.IsSuccessStatusCode){
return true;
}else{
return false;
}
}
}
Я пытаюсь
private readonly Mock<IHttpClientFactory> _mockHttpClientFactory;
private readonly Mock<HttpClient> _mockHttpClient;
[Fact]
public void TestMethod_ValidHttpRequest_ReturnsTrue()
{
var httpClient = _mockHttpClient.Setup(x => x.SendAsync(It.IsAny<HttpRequestMessage>()))
.ReturnsAsync(new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent("[{'id':1,'value':'1'}]"),
});
var client = _mockHttpClientFactory.Setup(x => x.CreateClient()).Returns(httpClient); //DOESNT WORK
var service = new TestService(_mockHttpClientFactory);
var result = service.TestMethod("testdata");
Assert.True(result.Result)
}