View Model クラスの単体テストを書いています。このクラスのコンストラクターには、ILoggerService が挿入されます。このインターフェイスは、ILogger を返す 1 つのメソッド GetLog を定義します。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);
}
有効な Logger が返されるように ILoggerService をモックするにはどうすればよいですか? 現時点では、単体テストで NullReferenceException がスローされます。
私はモッキングを行うために Moq を使用しています。
私は次のように何かをする必要があると想像しています
var loggerService = new Mock<ILoggerService>();
loggerService.Setup(svc => svc.GetLog(??))
しかし、テスト クラスに ILoggable を実装させないとどうなるかわかりません。
前もって感謝します。