使用Gtest可以返回调用函数的值

时间:2015-09-24 13:36:45

标签: c++ unit-testing googletest

是否可以返回调用invoke后得到的值? 例如,

int foo(int a, int b) {return a+b;}

class FooMock {
  MOCK_METHOD0(MockMethod, int(int a, int b));
}

void bar()
{
  FooMock mock;
  EXPECT_CALL(mock,MockMethod(_,_)).WillRepeatedly(DoAll(Invoke(foo),Return(result_of_foo)));
//Firstly foo should be invoked, secondly, result of function should be returned as result of MockMethod
}

如何使result_of_foo等于函数foo的结果? 或者确实存在另一种返回计算值的方法?

1 个答案:

答案 0 :(得分:6)

这比你想象的要简单。如果Invoke是一个函数,返回的值将是函数返回的值。

EXPECT_CALL(mock,MockMethod(_,_)).WillRepeatedly(Invoke(foo));