Я создаю Rest API в. net core 3 (мой первый). В этом API я сделал DLL, который я вызываю из некоторых методов API. Я хочу написать несколько тестов для этой библиотеки DLL, но у меня есть некоторые проблемы с внедрением зависимости и получением значений, установленных в API ConfigureServices. Моя главная проблема - получить HttpClient по имени с IHttpClientFactory.
Моя архитектура:
- Project WebApi
- Project dllApi
- Project Тесты
Вот мои ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddHttpClient("csms", c =>
{
c.BaseAddress = Configuration.GetValue<Uri>("ExternalAPI:CSMS:Url");
});
services.AddSingleton(typeof(IdllClass), typeof(dllClass));
}
Мой класс в dll
public class dllClass
{
private readonly IHttpClientFactory ClientFactory;
public dllClass(IHttpClientFactory clientFactory)
{
ClientFactory = clientFactory;
}
public async Task<Credentials> GetCredentials()
{
var request = new HttpRequestMessage(HttpMethod.Get, $"Security/GetCredentials");
using (var client = ClientFactory.CreateClient("csms"))
{
var response = await client.SendAsync(request);
}
return new Credentials();
}
}
Я пробовал другой метод (moq, Substitute, ...) и ближе всего я получил от своей цели следующий, но он не находит HttpClient по имени:
public void GetCredentials()
{
var httpClientFactoryMock = Substitute.For<IHttpClientFactory>();
var service = new dllClass(httpClientFactoryMock);
var result = service.GetCredentials().Result;
}
Как мне написать этот тест?
Спасибо за вашу помощь