c++ - gmock 可以模拟重载方法吗?

标签 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 的错误消息是这样的: 不允许不完整的类型。

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

最佳答案

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

关于c++ - gmock 可以模拟重载方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757881/

相关文章:

c++ - 没有规则使 target/usr/lib/libX11.so

Phpunit - 如何注释测试?

c# - Quartz.net 调度程序无法保持活力

java - Mockito 验证交互与验证结果

c++ - 是否所有 openMp c++​​ 程序都使用在 GPU 上运行的 -fopenmp 编译?

c++ - 临时对象不表现为 const

c++ - 模板类型方法 GTesting

googletest - 如何告诉 Cppcheck 跳过头文件

c++ - 如何使用 googletest 检查两个枚举类元素的相等性?

UI + 逻辑 + DB 查询的 Java 到 C++ 转换