class MyClass
{
public:
int state;
};
class SomeClass
{
virtual MyClass myFunction1() = 0;
virtual void myFunction2(MyClass) = 0;
};
class MyMock : public SomeClass
{
public:
MOCK_METHOD0(myFunction1, MyClass());
MOCK_METHOD1(myFunction2, void(MyClass));
};
TEST_F(/* ... */)
{
MyMock myMock;
MyClass myObject;
EXPECT_CALL(myMock, myFunction1()).WillOnce(Return(myObject));
EXPECT_CALL(myMock, myFunction2(myObject));
}
Когда я писал этот код, я думал, что проверял, использовал ли myFunction2
точный экземпляр MyClass
, возвращаемый myFunction1
.Но этот код также передает:
TEST_F(/* ... */)
{
MyMock myMock;
MyClass myObject1;
MyClass myObject2;
EXPECT_CALL(myMock, myFunction1()).WillOnce(Return(myObject1));
EXPECT_CALL(myMock, myFunction2(myObject2));
}
Так что, очевидно, 2-й EXPECT_CALL()
проверяет, только ли myFunction2
вызывается с любым MyClass
объектом, имеющим то же значение, что и myObject2
, а не, если этотот же экземпляр, который также может быть допустимым тестом, но он проверяет другое (более общее?) поведение.
Как я могу проверить, является ли это тот же экземпляр?