Я пытаюсь правильно добавить HttpClient
в свое приложение, одновременно позволяя смоделировать фабрику клиентов для модульного тестирования. Я использую этот в качестве ресурса.
В моем Startup.cs
services.AddHttpClient<IUploader, Uploader>()
.ConfigurePrimaryHttpMessageHandler(() =>
{
if (somecheckismet)
return new HttpClientHandler() { ServerCertificateCustomValidationCallback = delegate { return true; } };
return new HttpClientHandler();
});
И мой Uploader.cs
public class Uploader : IUploader
{
private readonly HttpClient m_httpClient;
public Uploader(HttpClient client)
{
m_httpClient = client;
}
public async Task<string> UploadData(string url, Dictionary<string, string> data)
{
HttpResponseMessage result;
try
{
result = await m_httpClient.PostAsync(url, new FormUrlEncodedContent(data));
if (result.StatusCode != HttpStatusCode.OK)
{
return "Some error message;
}
else
{
return null; // Success!
}
}
catch (Exception ex)
{
return "Uh-oh!";
}
}
}
Как видите, я пытаюсь ввести зависимость HttpClient
в Uploader
. Однако, теперь, когда я это сделал, как мне приступить к модульному тестированию Uploader
? Раньше это работало бы для внедрения зависимостей HttpClientHandler
, которые можно было бы удалить. Тем не менее, теперь, так как я пытаюсь использовать IHttpClientFactory
, похоже, мне нужно ввести HttpClient
.
Любая помощь будет принята с благодарностью.