Можно ли фиксировать параметры с помощью Google Mock (gmock)?

Я планирую использовать Google Mock. Мне нужно захватить ссылку на объект, чтобы впоследствии я мог вызвать некоторые методы из этого объекта.

Есть ли у Google Mock какие-либо способности захвата? Если нет, то каковы другие варианты тестирования модулей С++? Один из вариантов заключается в создании моего собственного класса mock, который захватывает объект.

Я ищу что-то похожее на Java EasyMock. Пример (не настоящий код):

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

Ответ 1

Вы можете написать настраиваемое действие для захвата параметра метода по ссылке (существует стандартное действие SaveArg для захвата одного по значению). Но то, что вы хотите, может быть достигнуто более простым способом:

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