У меня проблема при попытке выполнить модульное тестирование компонентов сигнализатора с помощью Mock. Вот где возникает проблема
_logger.LogInformation($"Registering a Station with id: {Id}" +
$" with status: {Status}" +
$"{(!string.IsNullOrEmpty(CommandId) ? $", with command: {CommandId}" : "")}",
LoggingConstants.Component.MessageHub,
LoggingConstants.Class.Workstation,
!string.IsNullOrEmpty(AppointmentId) ?
AppointmentId : LoggingConstants.NoAppointmentId,
LoggingConstants.NoConfirmationNumber);
LogInformation определяется как
logger.ForContext("Component", (object) component, false).ForContext("Class", (object) @class,
false).ForContext("AppointmentId", (object) appointmentId, false).ForContext("ConfirmationNumber",
(object) confirmationNumber, false).Information(message);
В тестовом классе Xunit Unit он используется как
public Mock<ILogger> MockLogger { get; set; }
MockLogger = new Mock<ILogger>();
Workstation = new Workstation(MockLogger.Object);
Когда модульный тест запускается, когда он попадает в это сообщение _logger.LogInformation (), он выдает
"System.NullReferenceException : Object reference not set to an instance of an object.
at LogInformation(ILogger logger, String message, String component, String class, String
appointmentId, String confirmationNumber)"
Чтобы убедиться, что он выбрасывается из-за ForContext, этот тест использовался
_logger.Information("a") -> Works
_logger.ForContext("a", "a").Information("a") -> Exception is thrown