我是谷歌模拟的新人。现在我有一个关于如何匹配参数引用的问题?这是代码
class Parameter {
public:
int m_idata;
char m_cdata;
bool Parameter::operator ==(const Parameter& element) const {
return (m_idata == element.m_idata && m_cdata == element.m_cdata);
}
};
class FooInterface {
public:
virtual ~FooInterface() {}
virtual void SetParameter(Parameter& val) = 0;
};
// mock class
class MockFoo: public FooInterface {
public:
MOCK_METHOD1(SetParameter, void(Parameter& val));
};
TEST(FooTest, setParameterTest) {
MockFoo mockFoo;
EXPECT_CALL(mockFoo, SetParameter(An<Parameter&>())); // How to match argument reference???
Parameter para;
mockFoo.SetParameter(para); // there is an exception here, why???
}
我还尝试了以下匹配SetParameter()
:
Parameter test_para;
EXPECT_CALL(mockFoo, SetParameter(Ref(test_para)));
和
EXPECT_CALL(mockFoo, SetParameter(A<Parameter&>()));
和
Parameter test_para;
test_para.m_cdata = 'c';
test_para.m_idata = 10;
EXPECT_CALL(mockFoo, SetParameter(_)).WillOnce(::testing::SetArgReferee<0>(test_para));
这两个代码也可能导致异常......谁能告诉我如何匹配Parameter&
函数中的参数引用SetParameter()
?