Как имитировать ILogger / ILoggerService с помощью Moq

Я пишу модульные тесты для своего класса View Model. В конструктор этого класса вводится ILoggerService. Этот интерфейс определяет 1 метод GetLog, который возвращает ILogger. Что-то вроде ниже, гдеэтопредставляет класс, который реализует 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, чтобы возвращается действительный регистратор? На данный момент мой модульный тест выдает исключение NullReferenceExeception.

Я использую Moq для насмешек.

Я полагаю, что мне нужно сделать что-то вроде

var loggerService = new Mock<ILoggerService>();
        loggerService.Setup(svc => svc.GetLog(??))

Но я не понимаю, как это сделать, если мой тестовый класс не реализует ILoggable.

Заранее спасибо.

7
задан user630190 20 March 2012 в 11:05
поделиться