我正在尝试使用 Google Mock 测试一个抽象类。按照forDummies指南,我构建了一个模拟类:
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':函数不接受 1 个参数
我的理解是,由于MockFoo
extends AbstractFoo
,它应该继承该setSize(QSize)
方法。然而,情况似乎并非如此。我怎样才能解决这个问题?
针对代码不准确进行了编辑