假设我有一个基类:
class Command {
public:
virtual int8_t Execute();
};
在基类cpp中定义。
另外,我有一个儿童班:
class SpecificCommand: public Command {
public:
int8_t Execute();
};
定义:
int8_t SpecificCommand::Execute() {
doSomeStuff();
Command::Execute();
}
如何模拟Command :: Execute()但是使用SpecificCommand对象进行测试?
答案 0 :(得分:1)
也许是这样的:
class SpecificCommandMock : public SpecificCommand
{
public:
MOCK_METHOD0(ExecuteMockedMethod, void());
int8_t Execute() override
{
doSomeStuff()
ExecuteMockedMethod();
}
}
当然,您应该在单元测试中使用SpecificCommandMock
,并且当要测试的课程要调用EXPECT_CALL
时,为ExecuteMockedMethod
设置Execute()
。
此外,我认为如果你必须做这些事情,应用程序的设计可能会出现问题。