2016-01-13 41 views
1

我剛開始使用gtest和gmock進行測試,然後停止了一個問題。問題是這樣的,可以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年是這樣的: 不完整的類型是不允許的。

任何機構都可以告訴我是否可以模擬重載的方法,如果答案是YES,那麼該怎麼辦?非常感謝提前。

回答

2

您在定義模擬常量方法的行上出現錯誤,它始終使用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 
+0

酷,它的作品! – dguan

相關問題