2011-11-14 15 views
8
//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); 

Powyższy kod zgłasza wyjątek.Jak używać programu NSubstitute do kpiny z leniwej klasy

leniwie zainicjowany typ nie ma społeczeństwa, konstruktora bez parametrów

używam C# 4.0 i NSubstitute 1.2.1

+1

Czy naprawdę chcesz zastąpić Lazy ? Po prostu zakładam, że Lazy <> działa i używa konstruktora Value Factory tego, dostarczając Substitute. Dla () jako Value Factory ... – sanosdole

+0

+1 do @ sanosdole's comment. Wysłaliśmy tę odpowiedź jako wiki społeczności. –

Odpowiedz

9

Zgodnie użytkownika @ sanosdole komentarza, chciałbym zaproponować za pomocą prawdziwa instancja Lazy, aby zwrócić swój zamiennik. Coś jak:

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

target.SendNotify("Message"); 

notificationService.ReceivedWithAnyArgs().sendNotification(null, null, null, null); 
Powiązane problemy