使用 Google C++ Mocking Framework (Google Mock) (V1.5) 将任意参数传递给调用的方法

2023-11-26

我有一个模拟方法。当它被调用时,我希望它在调用其正常行为之前调用另一个函数。就像是 :

EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_))
    .WillOnce(DoAll(
        Invoke(my_obj, &SomeAdditionalMethodIWantToCall),
        Invoke(my_obj, &DefaultBehavior),
        ));

唯一的问题是SomeAdditionalMethodIWantToCall期望参数与提供给的参数完全无关MockedMethod。我希望能够提供它们,但我在语法上遇到了困难。我希望有类似的东西(用假语法):

EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_))
    .WillOnce(DoAll(
        Invoke(my_obj, &SomeAdditionalMethodIWantToCall, arg1, arg2, arg3),
        Invoke(my_obj, &DefaultBehavior),
        ));

我在文档中寻找过这样的东西,但没有成功。

In 使用函数或函子作为操作, 我们有 :

  • Invoke(f), Invoke(object_pointer, &class::method), InvokeWithoutArgs(f), InvokeWithoutArgs(object_pointer, &class::method)它只会在调用时转发(或不转发)提供给模拟函数的参数。

  • InvokeArgument<N>(arg1, arg2, ..., argk)似乎是为了调用参数之一。

In 复合动作

  • WithArg<N>(a) and WithArgs<N1, N2, ..., Nk>(a)似乎是选择转发原始函数中的哪些参数。

我想我错过了一些非常明显的东西,但我有点卡在这里,所以任何建议都会有帮助。


如果您使用的是 c++11,则可以使用如下 lambda 函数:

EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_))
.WillOnce(DoAll(
    InvokeWithoutArgs([&]() { 
        my_obj->SomeAdditionalMethodIWantToCall(arg1, arg2, arg3); 
    },
    Invoke(my_obj, &DefaultBehavior)   
));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google C++ Mocking Framework (Google Mock) (V1.5) 将任意参数传递给调用的方法 的相关文章

随机推荐

  • 如何检查我是否处于已检查的上下文中?

    我如何使用 C 代码知道我是否处于checked无论是否有上下文 都不会导致 捕获OverflowException 会带来性能损失吗 块之间的唯一区别是checked vs unchecked是编译器生成的用于基本值类型算术运算的IL指令
  • 使用 ISQL 执行脚本

    我正在创建一个简单的 isql 脚本 但它不起作用 我需要一些帮助来找出它出了什么问题 我需要连接到数据库并执行 SQL 文件 这是我的脚本 名为 script sql CONNECT localhost C Monde Servidor
  • 有 3 列的表。固定中心列宽度。如何在其他两列上共享宽度?

    我有一个 100 宽度的 3 列表格 中心列的宽度必须为 600 像素 如何在用完剩余空间的同时让另外两个宽度相等 table style width 100 tr td left td td style width 600px cente
  • 将复合语句放入 for 循环的条件中

    我有一个人为的例子来演示对特定功能的请求 我想知道是否有人有一个聪明的技巧来做到这一点 以下是一个经常遇到的问题 打印一系列数字 在它们之间打印一个空格 并在末尾打印一个回车符 但没有空格 显而易见的解决方案是使最后一个 或第一个 语句成为
  • 使用 OutVariable 创建 ArrayList

    我确信发生这种情况是有正当理由的 但我不知道它是什么 我有以下代码 Deleted Items 0 ParentNode RemoveChild Items 0 Write Output Deleted 如果我使用调用此代码 Do Some
  • 通过python从音频文件中提取音频频谱

    抱歉 如果我提交重复的内容 但我想知道 python 中是否有任何库可以使您能够从音频文件中提取声谱 我希望能够获取音频文件并编写一个算法 该算法将返回一组数据 TimeStampInFile 频率 幅度 我听说这通常称为节拍检测 但据我所
  • HTTP 错误代码 505

    我已经在 google 上搜索过 505 是 不支持 HTTP 版本 但仍然无法弄清楚我的问题 我有一个带有 Tomcat 的 Web 应用程序 服务器端带有自签名证书来启用 HTTPS 无需验证客户端 客户端将验证服务器证书 我分析了wi
  • WPF 与 WinForms 或丰富的 UI 与稳定的应用程序?您如何看待 Windows 窗体平台的未来? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 WPF 与 WinForm
  • Angular 4 Universal“窗口未定义”

    我的项目运行完美 但是当我实现通用时 我得到 窗口未定义 我的错误如下 node modules hammerjs hammer js 2643 window document Hammer ReferenceError window is
  • OSX:PHP 本地主机错误并且无法加载动态库

    我该如何修复这个 php 错误 PHP Warning PHP Startup Unable to load dynamic library usr lib php extensions no debug non zts 20100525
  • 从 Thread.UncaughtExceptionHandler 启动服务?

    我正在尝试设置一个全局异常处理服务 如中提到的这个答案 这种方法听起来很合乎逻辑 因为崩溃后 我的自定义中的代码Thread UncaughtExceptionHandler可能无法成功执行 要么是因为应用程序可能未处于稳定状态 要么是因为
  • Python matplotlib -> 3D 条形图 -> 调整刻度标签位置,透明条

    我正在尝试使用 Matplotlib 中的 bar3d 在 Python 中创建 3D 条形直方图 我已经到了可以在传递一些数据后在屏幕上显示直方图的地步 但我陷入了以下困境 正确显示轴标签 当前错过了最终 或初始 刻度标签 要么使每个轴上
  • Android GridView 多选

    我已经实现了 GridView 并激活了 mGridView setChoiceMode GridView CHOICE MODE MULTIPLE MODAL 模式 现在 当我长按一个项目时 我可以从网格中选择多个项目 我想通过正常的短暂
  • 使用数据存储防止内存泄漏的最佳实践是什么?

    我尝试使用数据存储首选项 alpha07 来存储和获取数据 一切正常 我在数据存储中遇到了一些内存泄漏问题 使用数据存储防止内存泄漏的最佳实践是什么 这是我的示例代码 Preferences DataStore implementation
  • 如何从 Wildfly (Jboss) 访问 ws 端点的 CXF jar

    我尝试在 Wildfly 8 2 中部署我的 war 文件 我的应用程序使用 org apache cxf 进行 Web 服务 但 Wildfly Jboss 默认带有自己的 cxf jar 可以提供完整的 Java EE 支持 我可以消除
  • 使用 Flask-SQLAlchemy 反射表会引发 RuntimeError:应用程序未注册

    我有一个 SQLite 数据库来管理用户登录 还有一个现有的 MySQL 数据库 我将 MySQL 数据库添加到 Flask SQLAlchemySQLALCHEMY BINDS配置 当我尝试反映表格时 出现以下错误 RuntimeErro
  • R 中的多面板标题

    我有一个关于 R 的超简短问题 我的目标是为使用 par 生成的多面板图分配一个通用标题 例如 par mfrow c 1 2 plot rnorm 1000 plot rnorm 1000 因此 类似于绘图函数的 main 但扩展到两个绘
  • 使用多列的 Pandas DataFrame 聚合函数

    有没有办法编写一个聚合函数 如DataFrame agg方法 该方法可以访问正在聚合的多列数据 典型的用例是加权平均值 加权标准差函数 我希望能够写出类似的东西 def wAvg c w return c w sum w sum df Da
  • 如何避免此结构定义中出现 PhantomData?

    我有一个看起来像这样的特征 trait Handler
  • 使用 Google C++ Mocking Framework (Google Mock) (V1.5) 将任意参数传递给调用的方法

    我有一个模拟方法 当它被调用时 我希望它在调用其正常行为之前调用另一个函数 就像是 EXPECT CALL my obj MockedMethod WillOnce DoAll Invoke my obj SomeAdditionalMet