std::function<result(xxx &, yyy)> l_function;
auto l_strategyMock = std::make_shared<StrategyMock>();
EXPECT_CALL(*m_strategyFactoryMock, createStrategy("default", _))
.WillRepeatedly(DoAll(SaveArg<1>(&l_function),
Return(l_strategyMock)));
EXPECT_CALL(*l_strategyMock, invokeFunction(_, _)) //invokeFunction(xxx &, yyy)
.WillOnce(Invoke(l_defaultHoStartRequestFiller));
此代码崩溃时:
C++ exception with description "bad_function_call" thrown in the test body.
第一个函数是以lambda作为parameter<1>调用的。我想捕获它,然后在第二个EXPECT_CALL上调用它,但是l_function似乎没有初始化。
有像"InvokePointee“这样的东西吗?
发布于 2015-09-04 18:19:34
使用std::reference_wrapper
。它提供了一个函数调用操作符,并且它本身是一个可复制的类型:
EXPECT_CALL(*l_strategyMock, invokeFunction(_, _))
.WillOnce(Invoke( std::ref(l_function) ));
// ~~~~~~~~^ ^
https://stackoverflow.com/questions/32403343
复制相似问题