Я хотел бы провести модульное тестирование фабрики, в которую я внедряю IHttpClientFactory, и эта фабрика создает класс, использующий HttpClient.
Это код:
public class ClientFactory : IClientFactory
{
private readonly IHttpClientFactory _httpClientFactory;
public ClientFactory(IHttpClientFactory paramHttpClientFactory)
{
_httpClientFactory = paramHttpClientFactory;
}
public CLient CreateClient(ClientCofiguron paramConfiguration)
{
HttpClient httpClient = _httpClientFactory.Create();
//Configure httpClient
}
}
И вот как я пытаюсь протестировать с помощью xUint:
[Fact]
public async Task Create_Client()
{
var httpClientFactory = new Mock<IHttpClientFactory>();
IClientFactory ClientFactory = new FactoriaSolicitanteFichero(httpClientFactory.Object);
Client = clientFactory.CreateCLient(...);
}
Проблема в том, что в методе ClientFactory.CreateClient httpClient создается со значением null, поэтому я могу использовать HttpClient для создания клиента.
Я предполагаю, что я использую Moq неправильно. Как мне издеваться над HttpClientFactory?
Благодарить.
Вы высмеяли IHttpClientFactory
, но не сказали ему, что возвращать при вызове CreateClient
, поэтому он вернет ноль.
Вам нужно сделать это:
var httpClientFactory = new Mock<IHttpClientFactory>();
httpClientFactory
.Setup(f => f.CreateClient(It.IsAny<string>()))
.Returns(...<your code to create a client>...);