c++ 如何调用stub函数[已关闭]

xzlaal3s  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(159)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
为什么我不能用相同的指针成功地调用我的存根函数。
下面是我存根函数:

class MockCNvMSensor:public CNvMSensor
{
public :
    MOCK_METHOD0(GetEnableTPG,bool());
};

我是这么说的:

std::unique_ptr<MockCNvMSensor> mock_sen(new MockCNvMSensor);
test_InitModule->m_upSensor=std::unique_ptr<CNvMSensor>((CNvMSensor*)(mock_sen.get()));

EXPECT_CALL(*mock_sen.get(),GetEnableTPG()).WillRepeatedly(Return(true));

auto& test=test_InitModule->m_upSensor;
cout<<"test1: "<<test_InitModule->m_upSensor->GetEnableTPG()<<"\tp: "<<test_InitModule->m_upSensor.get()<<endl;
cout<<"test2: "<<test->GetEnableTPG()<<"\tp: "<<test.get()<<endl;
cout<<"test3: "<<mock_sen->GetEnableTPG()<<"\tp: "<<mock_sen.get()<<endl;

结果是:

test1: 0        p: 0x2a531e10
test2: 0        p: 0x2a531e10
test3: 1        p: 0x2a531e10

我所期望的结果都是真的。这个问题已经困扰我很久了。

von4xj4u

von4xj4u1#

我发现原因是GetEnableTPG是一个常量函数:

virtual bool GetEnableTPG() const

您应该使用

MOCK_CONST_METHOD0

用const函数生成stub

相关问题