使用Gtest如何在ON_CALL中返回不同的值

Using Gtest how return different values in ON_CALL?

本文关键字:返回 CALL Gtest ON 使用      更新时间:2023-10-16

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

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
}

是否存在某种方法返回变量的新值?

是的,有一种方法,将您的代码更改为:

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

阅读更多关于ReturnPointee在这个链接(在Returning Live Values from Mock Methods部分)