googlemock:模拟一个本地对象

时间:2017-09-22 23:46:59

标签: c++ googlemock

#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()的返回值

感谢。

1 个答案:

答案 0 :(得分:1)

你不能。

你必须通过传递(模拟或提名)乌龟对象作为参数来补充来自外部的模拟对象(在你的例子乌龟中)。

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