2013-04-24 43 views
11

Tôi đang lên kế hoạch sử dụng Google Mock. Tôi cần phải nắm bắt một tham chiếu đối tượng để sau đó tôi có thể gọi một số phương thức từ đối tượng đó.Có thể chụp thông số bằng Google Mock (gmock) không?

Google Mock có bất kỳ khả năng chụp nào không? Nếu không, các lựa chọn khác cho thử nghiệm đơn vị C++ là gì? Một lựa chọn là tạo lớp giả của riêng tôi để chụp đối tượng.

Tôi đang tìm một cái gì đó tương tự như của Java EasyMock. Ví dụ (không mã thực):

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

Trả lời

8

Bạn có thể viết một hành động tùy chỉnh để chụp một số phương pháp mà theo tài liệu tham khảo (có một SaveArg hành động tiêu chuẩn để nắm bắt từng người giá trị). Nhưng những gì bạn muốn có thể đạt được theo cách đơn giản hơn:

using testing::Property; 
using testing::Eq; 
EXPECT_CALL(myInterface, 
      access(Property(&MyObject::getState, Eq(ACCESS_IN_PROGRESS)))); 
Các vấn đề liên quan