【发布时间】:2012-03-20 11:05:13
【问题描述】:
我正在为我的 View Model 类编写一些单元测试。此类的构造函数注入了 ILoggerService。该接口定义了 1 个返回 ILogger 的方法 GetLog。如下所示,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?目前我的单元测试抛出了 NullReferenceException。
我正在使用 Moq 进行模拟。
我想我需要做一些事情
var loggerService = new Mock<ILoggerService>();
loggerService.Setup(svc => svc.GetLog(??))
但是如果不让我的测试类实现 ILoggable,我看不到如何。
提前致谢。
【问题讨论】:
-
如果使用 Serilog,您只需将
Logger.None传递给您的班级。
标签: c# unit-testing prism moq moq-3