谷歌模拟:嘲弄父类?

时间:2017-08-07 12:38:16

标签: c++ unit-testing testing mocking googlemock

假设我有一个基类:

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对象进行测试?

1 个答案:

答案 0 :(得分:1)

也许是这样的:

class SpecificCommandMock : public SpecificCommand
{
public:
    MOCK_METHOD0(ExecuteMockedMethod, void());
    int8_t Execute() override
    {
        doSomeStuff()
        ExecuteMockedMethod();
    }
}

当然,您应该在单元测试中使用SpecificCommandMock,并且当要测试的课程要调用EXPECT_CALL时,为ExecuteMockedMethod设置Execute()

此外,我认为如果你必须做这些事情,应用程序的设计可能会出现问题。