2013-04-24 13 views
11

Mam zamiar używać Google Mock. Muszę przechwycić referencję do obiektu, aby móc później wywoływać niektóre metody z tego obiektu.Czy można przechwytywać parametry za pomocą Google Mock (gmock)?

Czy Google Mock ma jakieś zdolności przechwytywania? Jeśli nie, jakie są inne opcje testowania jednostkowego C++? Jednym z nich byłoby stworzenie własnej sztucznej klasy, która przechwytuje obiekt.

Szukam czegoś podobnego do Javy EasyMock. Przykład (nie prawdziwy kod):

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

Odpowiedz

8

Możesz napisać akcję niestandardową do przechwytywania parametr metody, za pomocą odniesienia (jest to standardowy SaveArg działanie uchwycić jeden po wartości). Ale to, czego chcesz, można osiągnąć w prostszy sposób:

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