2011-12-27 6 views
20

Chcę przetestować w przypadku jakiejś metody fail nie będzie wywoływana na pozornym obiekcie, używając google mock. więc kod będzie coś jak:google mock: jak mogę "OCZEKIWAĆ", że żadna metoda nie zostanie wywołana na próbę

auto mocObj = new MockObj; 
EXPECT_NO_METHOD_CALL(mocObj); //this is what I'm locking for 

auto mainObj = new MainObj(mocObj , ......and other mocks); // here I simulate a fail using the other mock objects, and I want to be sure the no methods are called on the mockObj 
+0

Pytanie: dlaczego jesteś nowy w swoich obiektach? To niepotrzebne ... –

Odpowiedz

14

Tworzenie StrictMock; każde nieoczekiwane wywołanie metody będzie niepowodzeniem.

30

Nie ma potrzeby wyraźnego informowania, że ​​żadne metody nie będą wywoływane. Jeśli ustawisz wystarczająco wysoki poziom rejestrowania, powinieneś otrzymać komunikat, jeśli wywołana zostanie metoda (jeśli nie ustawiono żadnych oczekiwań).

Inne następnie, że można ustawić oczekiwania tak:

EXPECT_CALL(mockObj, Foo(_)).Times(0); 

na wszystkich metod.

+1

To jest to, czego potrzebuję w moim teście. Ale uwaga, właściwe imię to "Times", zaczynając od kapitału. – demi

+0

Ref: https://github.com/google/googletest/blob/master/googlemock/docs/FrequentlyAskedQuestions.md#how-can-i-assert-that-a-function-is-never-called –

1

Użyj dokładnie (0) dla wszystkich metod klasy.

liczność zostanie ustawiona na zero, więc nie oczekujesz żadnych połączeń

Powiązane problemy