У меня есть типизированный клиент, которого я хочу зарегистрировать как синглтон:
public class SomeHttpClient
{
private readonly IHttpClientFactory _clientFactory;
public SomeHttpClient(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
public Task MakeSomeCallAsync(...)
{
var client = _clientFactory.Create();
// Do more stuff
}
}
Типизированный клиент должен быть синглтоном, потому что он имеет некоторую логику прерывателя цепи, которая прерывает цепь, если скорость APIограничение клиента.Схема должна быть разорвана по всему приложению, и, очевидно, не только по текущему конвейеру запросов (в противном случае клиент будет продолжать использовать API, который уже ограничивает скорость по сравнению с другими экземплярами).Это уже реализовано с помощью типизированного клиента, который инкапсулирует эту функциональность (хотя не Polly).
Теперь, поскольку типизированный клиент будет одиночным, мы не можем внедрить один HttpClient
, потому что это принесетвсе проблемы, которые у нас были раньше с одним долгожителем HttpClient
.Очевидное решение состоит в том, чтобы внедрить HttpClientFactory
, который теперь можно использовать для выдачи экземпляра HttpClient
каждый раз, когда он требуется типизированному клиенту, не беспокоясь об управлении временем жизни и т. Д., Поскольку теперь оно отложено до HttpClientFactory
.
Теперь у меня вопрос: как мне создать HttpClientFactory
по умолчанию для простого теста функциональной интеграции, в котором я хочу создать экземпляр типизированного клиента и посмотреть, смогу ли я подключиться к API и получить успешный ответ от автоматического теста?
Я не хочу настраивать ASP.NET Core TestServer и целое приложение вокруг него, потому что это лишнее решение для такого рода функционального тестирования, которое я хочу сделать в этом пункте.
Нет общедоступного конструктора, который я мог бы использовать для введения HttpClientFactory
?