use*_*190 7 c# unit-testing prism moq moq-3
我正在为View Model类编写一些单元测试.该类的构造函数注入ILoggerService.该接口定义了一个返回ILogger的方法GetLog.类似于下面的东西,它代表一个实现ILoggable的类: -
protected ViewModelBase(ILoggerService loggerService)
{
Logger = loggerService.GetLog(this);
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试对我的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);
}
Run Code Online (Sandbox Code Playgroud)
我将如何模拟ILoggerService以便返回有效的Logger?目前,我的Unit测试会抛出一个NullReferenceExeception.
我正在用Moq做我的嘲笑.
我想我需要做一些事情
var loggerService = new Mock<ILoggerService>();
loggerService.Setup(svc => svc.GetLog(??))
Run Code Online (Sandbox Code Playgroud)
但是,如果不让我的测试类实现ILoggable,我无法看到.
提前致谢.
我不确定GetLog方法参数的类型是什么,但我认为它类似于object记录器服务可以确定请求记录器的类型.您可以使用It模拟正在设置的方法中的参数,如下所示.
var logger = new Mock<ILogger>();
var loggerService = new Mock<ILoggerService>();
loggerService.Setup(c => c.GetLog(It.IsAny<object>())
.Returns(logger.Object);
Run Code Online (Sandbox Code Playgroud)
然后传递logger.Object给任何方法或类型需要一个ILoggerService.
| 归档时间: |
|
| 查看次数: |
9688 次 |
| 最近记录: |