gmock 可以模拟重载方法吗?
can gmock mock overloaded methods?
我刚开始使用gtest 和gmock 进行测试,然后被一个问题阻止了。问题是这样的,
首先,我有一个这样的class,
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
我刚开始使用gtest 和gmock 进行测试,然后被一个问题阻止了。问题是这样的,
首先,我有一个这样的class,
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