【问题标题】:can gmock mock overloaded methods?gmock 可以模拟重载方法吗?
【发布时间】:2016-01-13 03:24:53
【问题描述】:

我刚开始使用 gtest 和 gmock 进行测试,然后我被一个问题阻止了。问题是这样的,

首先,我有这样的课程,

class Foo
{
public:
    std::vector<int>& GetVec() { return m_MyVec; }
    const std::vector<int>& GetVec() const { return m_MyVec; }
private:
    std::vector<int> m_MyVec;
};

然后我想在重载函数上设置模拟,

class MockFoo : public Foo
{
public:
    MockFoo() {};
protected:
    MOCK_METHOD0(GetVec, std::vector<int>&()); // This is fine
    MOCK_METHOD0(GetVec, const std::vector<int>&() const); // This not good
}

来自 Visual Studio 2013 的错误消息是这样的: 不允许不完整的类型。

任何人都可以告诉我是否可以模拟重载方法,如果答案是肯定的,那么如何?非常感谢。

【问题讨论】:

    标签: c++ unit-testing googletest googlemock


    【解决方案1】:

    您在定义模拟 const 方法的行有错误,该方法始终使用 MOCK_CONST_METHODX 宏完成。

    MOCK_METHOD0(GetVec, const std::vector<int>&() const); // This not good
    

    应该是:

    MOCK_CONST_METHOD0(GetVec, const std::vector<int>&()); // This should be ok
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多