gpt4 book ai didi

c++ - 如何在 Google Mock 中匹配参数引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:04 24 4
gpt4 key购买 nike

我是 google mock 的新手。现在我有一个关于如何匹配参数引用的问题?这是代码

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));

这两个代码也可能导致异常...谁能告诉我如何匹配函数 SetParameter() 中的参数引用 Parameter&

最佳答案

这应该是一个评论,但我没有足够的声誉。

您的代码中唯一的错误是您有一个多余的“Parameter::”。我尝试运行代码,但没有看到任何异常。它运行得很好。

关于c++ - 如何在 Google Mock 中匹配参数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23292747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com