我正在用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警告。有人可以帮忙吗?
答案 0 :(得分:0)
好的,所以我终于找到了答案。
问题是gmock没有为NiceMock提供move构造函数。因此我们必须将class的向量更改为unique_ptr的向量,问题才得以解决。
具体来说,应该像这样:
std::vector<std::unique_ptr<NiceMock<MockClass>>> my_mockclass;
在推回新元素时,应使用:
my_mockclass.emplace_back(std::make_unique<NiceMock<MockClass>>());
它应该解决问题。 :)