代码之家  ›  专栏  ›  技术社区  ›  Jeoker

抑制模拟类向量的gmock警告

  •  0
  • Jeoker  · 技术社区  · 7 年前

    我正在用gmock编写单元测试。我的测试主体中有一些不感兴趣的函数调用,我想对其取消gmock警告。不过,我已经尝试了很多方法,比如NiceMock或EXPECT掼u 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关于无趣函数调用的警告。有人能帮忙吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jeoker    7 年前

    好吧,最后我自己找到了答案。

    问题是gmock没有为NiceMock提供move构造函数。所以我们必须将类的向量改为唯一的向量,问题就解决了。

    具体来说,应该是这样的:

    std::vector<std::unique_ptr<NiceMock<MockClass>>> my_mockclass;

    推回新元素时,应使用:

    my_mockclass.emplace_back(std::make_unique<NiceMock<MockClass>>());

    它应该能解决问题。:)