#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()的返回值感谢。
答案 0 :(得分:1)
你不能。
你必须通过传递(模拟或提名)乌龟对象作为参数来补充来自外部的模拟对象(在你的例子乌龟中)。
这种设计模式称为依赖注入,您应该尽快熟悉它,因为它在设计易于测试的应用程序和经常使用时非常重要。