Я пишу несколько юнит-тестов для своего класса View Model. Конструктор этого класса внедряется с помощью ILoggerService. Этот интерфейс определяет 1 метод GetLog, который возвращает ILogger. Пример ниже: this представляет класс, который реализует ILoggable: -
protected ViewModelBase(ILoggerService loggerService)
{
Logger = loggerService.GetLog(this);
}
Я пытаюсь протестировать мой метод CreateNewOrder, который выглядит следующим образом:
private void CreateNewOrder(INewOrderViewModel newOrderViewModel)
{
Logger.Log("Sending Create New Order Message", LogCategory.Info);
var createNewOrderMessage = new OrderMessage(newOrderViewModel);
_eventAggregator.GetEvent<CreateOrderEvent>().Publish(createNewOrderMessage);
}
Как бы я поэкспериментировал с ILoggerService, чтобы возвращался действительный Logger? В настоящий момент мой юнит-тест создает исключение NullReferenceExeception.
Я использую Moq, чтобы издеваться.
Я представляю, что мне нужно сделать что-то вроде
var loggerService = new Mock<ILoggerService>();
loggerService.Setup(svc => svc.GetLog(??))
Но я не могу понять, как заставить мой тестовый класс реализовать ILoggable.
Заранее спасибо.