我正在用gmock编写单元测试。我在测试主体中有一些有趣的函数调用,我想针对这些函数调用取消gmock警告。但是,我尝试了几种方法,例如NiceMock或EXPECT_CALL,但没有一种起作用。这是我尝试过的方法:
class MockClass : public OriginClass {
// class body
int aFunc();
}
NiceMock<std::vector<MockClass> > mock_vector;
NiceMock<MockClass> tmp;
mock_vector.push_back(tmp);
EXPECT_CALL(tmp, aFunc())
.WillRepeatedly(Return(1));
但是我不断收到关于无用函数调用的gmock警告。有人可以帮忙吗?
最佳答案
好的,所以最后我自己找到了答案。
问题是gmock没有为NiceMock提供move构造函数。因此我们必须将class的向量更改为unique_ptr的向量,从而解决了问题。
具体来说,应该是这样的:std::vector<std::unique_ptr<NiceMock<MockClass>>> my_mockclass;
向后推新元素时,应使用:my_mockclass.emplace_back(std::make_unique<NiceMock<MockClass>>());
它应该解决问题。 :)
关于c++ - 禁止模拟类 vector 的gmock警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51542512/