2011-12-27 4 views
20

Voglio testare l'eventuale in caso di errore nessun metodo verrà chiamato su un oggetto fittizio, usando google mock. modo che il codice essere qualcosa del tipo:google mock: come posso "ASPETTARE" che nessun metodo verrà chiamato su un finto

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

Domanda: perché stai facendo il newing dei tuoi oggetti? Non è necessario ... –

risposta

14

Creare un StrictMock; qualsiasi chiamata di metodo inattesa sarà un errore.

30

Non è necessario dire esplicitamente che non verranno chiamati metodi. Se si imposta il livello di registrazione abbastanza alto, si dovrebbe ricevere un messaggio se viene chiamato un metodo (se non è impostata alcuna aspettativa).

A parte ciò, è possibile impostare le aspettative in questo modo:

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

su tutti i metodi.

+1

Questo è quello che mi serve nel mio test. Ma nota, il nome giusto è 'Times', a partire dal capitale. – demi

+0

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

1

Utilizzare Esattamente (0) per tutti i metodi della classe.

la cardinalità sarà impostata su zero quindi non ti aspetti chiamate