如何使用NSubstitute来模拟一个懒惰的类

时间:2011-11-14 09:25:31

标签: c# unit-testing mocking lazy-evaluation nsubstitute

//Assert
Lazy<INotificationService> notificationService = Substitute.For<Lazy<INotificationService>>();
Service target = new Service(repository, notificationService);

//Act
target.SendNotify("Message");

//Arrange
notificationService.Received().Value.sendNotification(null, null, null, null);

以上代码抛出异常。

  

lazily-initialized类型没有公共的无参数构造函数

我正在使用C#4.0和NSubstitute 1.2.1

1 个答案:

答案 0 :(得分:10)

根据@ sanosdole的评论,我建议使用真实的Lazy实例来返回您的替代品。类似的东西:

var notificationService = Substitute.For<INotificationService>();
var target = new Service(repository, new Lazy<INotificationService>(() => notificationService));

target.SendNotify("Message");

notificationService.ReceivedWithAnyArgs().sendNotification(null, null, null, null);