2013-04-24 15 views
11

Sto pianificando di utilizzare Google Mock. Ho bisogno di catturare un riferimento all'oggetto in modo da poter successivamente chiamare alcuni metodi da quell'oggetto.È possibile acquisire parametri con Google Mock (gmock)?

Google Mock ha capacità di acquisizione? In caso contrario, quali sono le altre scelte per il test dell'unità C++? Una scelta sarebbe quella di creare la mia classe di simulazione che cattura l'oggetto.

Sto cercando qualcosa di simile a Java EasyMock. Esempio (non reale il codice):

Capture<MyObject> capture; 
EXPECT_CALL(myInterface, access(capture)); 
instanceUnderTest.setAccessPoint(myInterface); 
instanceUnderTest.run(); 
MyObject &capturedObject = capture.getValue(); 
EXPECT_EQ(ACCESS_IN_PROGRESS, capturedObject.getState()); 

risposta

8

è possibile scrivere un'azione personalizzata per catturare un parametro di metodo per riferimento (c'è uno standard SaveArg azione per catturare uno per valore). Ma quello che vuoi può essere raggiunto in un modo più semplice:

using testing::Property; 
using testing::Eq; 
EXPECT_CALL(myInterface, 
      access(Property(&MyObject::getState, Eq(ACCESS_IN_PROGRESS)))); 
Problemi correlati