До сих пор мы издевались над 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
является внутренним.
Я всегда могу изменить стратегию насмешки (от строгой до свободной), но я бы предпочел оставить ее как есть (строго). Итак, есть какие-нибудь подсказки, как решить эту проблему?
Спасибо.