.NET Core , Unit test и странная ошибка с Microsoft.Extensions.Logging.ILogger
От: Glestwid  
Дата: 24.03.20 20:32
Оценка:
.NET Core 3.1, VS 2019


    public class TestServiceRepository : ITestServiceRepository
    {
        readonly ILogger<TestServiceRepository> _logger;
        readonly TestServiceDbContext _context;

        public TestServiceRepository(ILogger<TestServiceRepository> logger, TestServiceDbContext context)
        {
            _logger = logger;
            _context = context;
        }

...


public void TestMethod1()
        {
            var services = new ServiceCollection();
            services.AddDbContext<TestServiceDbContext>(opt => opt.UseInMemoryDatabase("TodoList"));
            services.AddScoped<ITestServiceRepository, TestServiceRepository>();
            services.AddScoped<ICurrencyRatesAgent, CurrencyRatesAgent>();
            services.AddScoped<IMapper, DemoMapper>();

            using (ServiceProvider serviceProvider = services.BuildServiceProvider())
            {
                var appService = serviceProvider.GetRequiredService<ITestServiceRepository>();


На последней строке ловлю

System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger`1[TestService.Datastorage.TestServiceRepository]' while attempting to activate 'TestService.Datastorage.TestServiceRepository'.



При этом вызов такого кода из webapi controller проходит на ура, т.е. там как-то Microsoft.Extensions.Logging.ILogger резолвится? при том что никакого инициализатора для Microsoft.Extensions.Logging.ILogger в Startup.cs нет и в помине . Как мне в Unit test project подсунуть нужный инстанс Microsoft.Extensions.Logging.ILogger?
Re: .NET Core , Unit test и странная ошибка с Microsoft.Extensions.Logging.ILogg
От: Ночной Смотрящий Россия  
Дата: 24.03.20 20:51
Оценка:
Здравствуйте, Glestwid, Вы писали:

G>При этом вызов такого кода из webapi controller проходит на ура, т.е. там как-то Microsoft.Extensions.Logging.ILogger резолвится? при том что никакого инициализатора для Microsoft.Extensions.Logging.ILogger в Startup.cs нет и в помине .


Там может быть AddLogging. Но его вызывает кто не попадя.

G> Как мне в Unit test project подсунуть нужный инстанс Microsoft.Extensions.Logging.ILogger?


services.AddLogging()
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.