首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GMock,调用std::SaveArg捕获的函数

GMock,调用std::SaveArg捕获的函数
EN

Stack Overflow用户
提问于 2015-09-04 17:13:04
回答 1查看 2.9K关注 0票数 2
代码语言:javascript
运行
复制
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));

此代码崩溃时:

代码语言:javascript
运行
复制
C++ exception with description "bad_function_call" thrown in the test body.

第一个函数是以lambda作为parameter<1>调用的。我想捕获它,然后在第二个EXPECT_CALL上调用它,但是l_function似乎没有初始化。

有像"InvokePointee“这样的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-04 18:19:34

使用std::reference_wrapper。它提供了一个函数调用操作符,并且它本身是一个可复制的类型:

代码语言:javascript
运行
复制
EXPECT_CALL(*l_strategyMock, invokeFunction(_, _))
        .WillOnce(Invoke( std::ref(l_function) ));
//                        ~~~~~~~~^          ^
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32403343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档