2013-04-24 12 views
11

Google Mock'u kullanmayı planlıyorum. Bir nesne başvurusu yakalamalıyım, böylece daha sonra bu nesneden bazı yöntemleri arayabilirim.Google Mock (gmock) ile parametreleri yakalamak mümkün mü?

Google Mock'ın yakalama özellikleri var mı? Değilse, C++ birim testi için diğer seçenekler nelerdir? Bir seçenek, nesneyi yakalayan kendi mock sınıfımı yaratmak olurdu.

Java'nın EasyMock benzeri bir şey arıyorum. Örnek (değil gerçek kodu):

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

cevap

8

Bu başvuru bir yöntem parametre almak için bir özel işlem yazabilir (değer tek yakalamak için standart SaveArg eylem bulunmaktadır). Ama ne istediğinizi daha basit bir şekilde elde edilebilir:

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