Как издеваться над методами ILogger.LogXXX на Netcore 3.0 - PullRequest
0 голосов
/ 08 октября 2019

До сих пор мы издевались над ILogger.LogXXX вызовами, следуя этому подходу .

К сожалению, после обновления проекта до .net core 3.0, и если вы используетестрогие насмешки (Moq), он всегда будет жаловаться на отсутствие соответствующей настройки:

Moq.MockException : ILogger.Log<FormattedLogValues>(LogLevel.Information, 0, 
           Inicio de cancelamento de reserva:  Grm.GestaoFrotas.Dtos.Reservas.Mensagens.MsgCancelamentoReserva, 
           null, 
           Func<FormattedLogValues, Exception, string>) invocation failed with mock behavior Strict.
All invocations on the mock must have a corresponding setup.

К сожалению, я не могу просто изменить объект с помощью FormattedLogValues, например:

_container.GetMock<ILogger<GestorReservas>>()
          .Setup(l => l.Log(It.IsAny<LogLevel>(),
                            It.IsAny<EventId>(),
                            It.IsAny<FormattedLogValues>(),
                            It.IsAny<Exception>(),
                            It.IsAny<Func<FormattedLogValues, Exception, string>()));

Это не сработает, потому что FormattedLogValues является внутренним.

Я всегда могу изменить стратегию насмешки (от строгой до свободной), но я бы предпочел оставить ее как есть (строго). Итак, есть какие-нибудь подсказки, как решить эту проблему?

Спасибо.

...