可以gmock模拟重载方法?

时间:2016-01-13 03:24:53

标签: c++ unit-testing googletest googlemock

我刚刚开始使用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;
};

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

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的错误消息是: 不允许使用不完整类型。

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

1 个答案:

答案 0 :(得分:2)

您在定义模拟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