Не удается получить журналы EF Core во время модульных тестов при использовании поставщика EF Core In Memory - PullRequest
2 голосов
/ 16 марта 2020

У меня есть приложения. net core 2.2, использующие базу данных SQL. Я написал несколько модульных тестов с использованием поставщика EF Core In Memory для проверки кода доступа к данным. Я хотел получить сгенерированные журналы SQL (в основном хотел знать, как генерируются операторы SQL. Я ссылался на эту статью https://docs.microsoft.com/en-us/archive/msdn-magazine/2018/october/data-points-logging-sql-and-change-tracking-events-in-ef-core, но она не работала (не вижу никаких журналов). В конце концов я получил что-то вроде

public class TestFixture: IDisposable
    {
        private static readonly LoggerFactory _loggerFactory
           = new LoggerFactory(new[] {
            new DebugLoggerProvider((category, level) =>
                level == LogLevel.Debug)
            //new ConsoleLoggerProvider ((category, level) =>
            //    category == DbLoggerCategory.Database.Command.Name &&
            //    level == LogLevel.Debug, true)
        });

        #region Constructor(s)
        public TestFixture()
        {

        }
        #endregion

        #region Public Method(s)

        public MyDbContext CreateMyDbContext()
        {
            var options = new
               DbContextOptionsBuilder<MyDbContext>().UseInMemoryDatabase(
               "MyDb")
               .UseLoggerFactory(_loggerFactory)
               .EnableSensitiveDataLogging()
               .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking).Options;
            return new MyDbContext(options);
        }
        #endregion

Теперь я получаю много журналов в окне вывода VS, что не помогает. Похоже, они являются внутренними журналами EF Core, но способны идентифицировать операторы SQL Кто-нибудь есть идеи, как получить журналы EF Core в сценарии тестирования модуля / интеграции при использовании поставщика EF Core In Memory?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...