我正在嘗試使用Google Mock測試抽象類。繼forDummies指導,我已經構造我的課的模擬:在Google Mock上調用重載函數
AbstractFoo.h
class AbstractFoo {
public:
virtual void setSize(int w, int h) = 0;
void setSize(const QSize& s); // implemented as calling above function
}
MockFoo.h
#include "gmock/gmock.h"
class MockFoo : public AbstractFoo {
public:
MOCK_METHOD2(setSize, void(int w, int h));
}
FooTest.cpp
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "MockFoo.h"
TEST(AbstractFoo, MethodSetSize) {
MockFoo foo;
EXPECT_CALL(foo, setSize(5, 5)).Times(1);
foo.setSize(QSize(5, 5)); // this line produces compiler error
}
標線產生以下編譯器錯誤:
C2660: 'MockFoo::setSize' : function does not take 1 arguments
我的理解是,由於MockFoo
擴展AbstractFoo
,它應該繼承setSize(QSize)
方法。但是,這似乎並非如此。我怎樣才能解決這個問題?
編輯的代碼不準確
感謝您指出。這些都是錯誤,因爲我構建了比我的實際代碼更短的示例,並且不存在於我的代碼中,該代碼仍然產生顯示的錯誤。 – bdares
@bdares創建可編輯的示例後,我意識到問題到底是什麼。這就是C++的工作原理。 –
感謝您的解釋,尤其是解決方法! – bdares