私はグーグルモックの新人です。引数の参照を一致させる方法について 1 つ質問があります。ここにコードがあります
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));
これら2つのコードは両方とも例外を引き起こす可能性があります...Parameter&
関数内の引数参照を一致させる方法を教えてもらえますSetParameter()
か?