Googlemock:模拟本地对象

googlemock: mock a local object

本文关键字:对象 模拟 Googlemock      更新时间:2023-10-16
#include "gtest/gtest.h"
#include "gmock/gmock.h"  
class Turtle{
    public:
        int foo(); 
};
int func(){
    Turtle local_tutrtle;
    auto x = local_tutle.foo(); 
    ......
    return x;
}
TEST(mock, foo) {
    class MockTurtle : public Turtle {
        public:
            MOCK_METHOD0(foo, int());
    };
    ASSERT_EQ(10, func());
}

如何在func()中嘲笑local_turtle?我想在不修改func();

的情况下更改local_tutle.foo()的返回值

谢谢。

你不能。

您必须通过(嘲笑或提名)乌龟对象作为参数来补充外部模拟的对象(在您的示例海龟中)。

这种设计模式称为依赖注入,您应该尽快熟悉它,因为它在设计易于测试的应用程序并经常使用非常重要。