使用Gtest如何在ON_CALL中使用return不同的值?

Using Gtest how return different values in ON_CALL?

是否可以使用 ON_CALL WillByDefault return 不同的值? 例如

class FooMock {
  MOCK_METHOD0(foo, int());
}

void bar()
{
  FooMock mock;
  int f = 0;
  ON_CALL(mock, foo()).WillByDefault(Return(f));
  EXPECT_TRUE(f==mock.foo()); // this is correct
  f++;
  EXPECT_TRUE(f==mock.foo()); // it is failed, because ON_CALL returns f=0
}

是否存在一些方法来return变量的新值?

是的,有办法,将您的代码更改为:

ON_CALL(mock, foo())
       .WillByDefault(ReturnPointee(&f));

详细了解 ReturnPointee in this link(在 Returning Live Values from Mock Methods 部分)