我是谷歌模拟的新手。现在我有一个关于如何匹配参数引用的问题?这是代码
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()
吗?
答案 0 :(得分:0)
这应该是评论,但我没有足够的声誉。
代码中唯一的错误是你有一个多余的“Parameter ::”。 我试图运行代码,我没有看到任何异常。它运行得很好。