2010-09-20 11 views
13

jest to legalne Min klasę, która nie dziedziczy interfejs tak:Can MOQ Mock klasy

var mockIActionService = new Mock<IActionService>(); 
var mockValidAgeRule = new Mock<ValidAgeRule>(mockIActionService.Object); 

I wstrzyknąć IService do ValidAgeRule który jest tylko prosty klasy z jednej metody zwanej „excute” . Moje pytanie brzmi: jak sprawdzić, czy zostało to wywołane. Ilekroć próbuję:

mockValidAgeRule.Verify(x => x.Execute(app)); //Where App is a valid object 

czy ktoś wie, jak to zrobić?

+0

Myślę, że zapomniałeś uwzględnić to, co dzieje się, gdy próbujesz wywołać mockValidAgeRule.Verify(). Zakładam, że test się nie powiedzie, nawet jeśli jesteś pewien, że został wywołany Execute. –

Odpowiedz

20

Uważam, że należy wprowadzić metodę Execute w sposób wirtualny.

Moje zrozumienie jest takie, że Moq tworzy podklasę twojej klasy w tym przypadku i musi zastąpić twoją metodę, aby śledzić, czy została wywołana.

+0

ya posłuchałem, aby uczynić to wirtualnym –