在传递给模拟函数的参数上调用成员函数的最简单方法是什么?

2024-01-29

给定接口

class IFooable {
  virtual void Fooable() = 0;
};

class IFoo {
  virtual void Foo(IFooable* pFooable) = 0;
};

和古尔模拟模拟

class TMockFoo : public IFoo {
  MOCK_METHOD1(Foo, void (IFooable*));
};

指定调用的操作的最简单方法是什么Fooable()关于模拟方法的参数Foo()?

我努力了

TMockFoo MockFoo;
ON_CALL(MockFoo, Foo(_))
  .WithArg<0>(Invoke(&IFooable::Fooable));

但这不能编译,因为Invoke()只有一个参数需要一个自由函数,而不是成员函数。

Using boost::bind应该可以工作,但不一定会使代码太可读。在我写自定义之前Action,我想检查一下我是否遗漏了一些完全明显的东西。


我无法测试它,因为我没有安装 Google Mock,但似乎Invoke还有另一个带有两个参数的重载,即对象和方法指针,因此它将是:

IFooable* ifooable = new IFooableImpl(...);
TMockFoo MockFoo;
ON_CALL(MockFoo, Foo(_))
  .WithArg<0>(Invoke(&ifooable,&IFooable::Fooable));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在传递给模拟函数的参数上调用成员函数的最简单方法是什么? 的相关文章

  • 以相反的顺序迭代可变参数模板参数

    如果我手动反转传递给它的模板参数的顺序 以下代码将起作用 template
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 使用不带参数的 Split() 时,默认分隔符是什么?

    所以我看了看String Split 今天 C 中的方法 我意识到你也可以向它传递零参数 这是我从未考虑过的 使用时默认的分隔符是什么Split 没有任何参数 如果没有值 则为空白 来源自here https msdn microsoft
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 将 C# 反射代码移植到 Metro-Ui

    我正在尝试移植使用反射的现有 C 类 通用工厂 但我无法编译这段代码 Type types Assembly GetAssembly typeof TProduct GetTypes foreach Type type in types i
  • 在通过网络发送之前压缩位图

    我正在尝试通过网络发送位图屏幕截图 因此我需要在发送之前对其进行压缩 有一个库或方法可以做到这一点吗 当您将图像保存到流时 您have选择一种格式 几乎所有位图格式 bmp gif jpg png 都使用一种或多种压缩形式 因此 只需选择适
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • `cosf`、`sinf` 等不在 `std` 中 [重复]

    这个问题在这里已经有答案了 根据这里的讨论 我有报告了一个错误 https bugs launchpad net ubuntu source gcc 8 bug 1831385给 Ubuntu 开发者 编译以下示例 C 程序时 includ
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 如何使用 ASP.NET Web 表单从代码隐藏中访问更新面板内的文本框、标签

    我在更新面板中定义了一些控件 它们绑定到中继器控件 我需要根据匿名字段隐藏和显示用户名和国家 地区 但问题是我无法以编程方式访问更新面板中定义的控件 我如何访问这些控件 我也在网上查找但找不到很多参考资料 下面是来自aspx页面和 cs页面
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se

随机推荐

  • iOS 9 启动画面为黑色

    升级到 iOS 9 后 我的应用程序的启动屏幕全是纯黑色 有人知道这是为什么吗 其中一些使用 xib 初始屏幕 一些使用图像 但现在它们都是黑色的 是否必须使用 Xcode 7 构建应用程序才能使启动屏幕在 iOS9 中工作 有没有人看过一
  • 从 Codeigniter 中的 Active record 获取 SUM 和 group 字段的结果

    我需要在 Codeigniter 中构建此查询 但我不知道如何获取 SUM 的结果 SELECT description SUM amount FROM PAYMENT WHERE date payment between 2014 02
  • Kubernetes RBAC - 禁止尝试授予额外权限

    我在用着Kubernetesv1 8 14 定制版CoreOS簇 kubectl version short Client Version v1 10 5 Server Version v1 8 14 coreos 0 当尝试创建以下内容时
  • Docker:如何重新启动容器内的进程?

    我有一组测试 我想在 docker 容器上运行 在测试过程中 我正在更改测试数据 并且需要重新启动 JETTY 最好的方法是什么 我可以想象一些选择 使用 SSH 但对于 docker 来说 ssh 并不是最好的选择 docker 上的 P
  • 使用 sorttable.js 对表自动排序

    我正在尝试使用此脚本对 html 表进行排序 http www kryogenix org code browser sorttable http www kryogenix org code browser sorttable JS代码本
  • event.preventDefault();提交表单时不起作用

    我正在尝试将提交的表单的结果放入div而不是在新窗口中打开它 问题是我的event preventDefault 似乎不起作用 我不明白为什么 结果 在我点击提交按钮后总是打开contact form handler php 这是脚本文件
  • 在 Delphi 中使用 SSL 但仍然只有一个 exe

    我们使用 Indy 并且需要在我们的应用程序中支持 SSL 电子邮件 但是我们需要将我们的应用程序放在单个 Exe 中 我们知道默认的 Indy 处理程序要求路径中包含 dll 从 EXE 资源之一中提取 Dll 将是最后的手段 还有更好的
  • CIColorControls 和 UISlider w/Swift 4 [重复]

    这个问题在这里已经有答案了 我试图让滑块影响 UIImageView 的亮度 我的出路和行动 IBOutlet weak var previewImage UIImageView IBAction func adjustBrightness
  • AngularJs 嵌套 ng-repeat 过滤器

    我有一个要过滤的分组嵌套对象 该过滤器仅适用于第二组
  • 如何查找sql​​ server中一个表的所有依赖关系

    我有一个数据库 其中有表 过程 视图和触发器的列表 但我想要一个查询来获取表的所有依赖项 包括引用父表的子表 我们可以使用以下方法来检查依赖关系 方法一 使用sp depends sp depends dbo First GO 方法二 使用
  • SQL Server 自动标识字段的最大大小

    SQL Server 标识字段 int 的最大大小是多少 我每天会在几个表中多次删除和插入数百条记录 我很好奇这会对自动身份字段产生什么影响 我可以每天晚上左右运行一项作业 并根据需要截断这些数据 我很感激你的想法 谢谢 INT 最多可达
  • 圆形 div 中的文本溢出

    我有一个圆形 div 但我的文本不在其中 默认情况下它略高于我无法查明原因 我在顶部添加了边距以将其强制放在 div 内 但我确信有更好的方法来执行此操作 因为我的方法仅适用于一定数量的文本 div description display
  • 如何在C/C++中存储和调用已编译的函数?

    对于非常低级别的优化目的 如果我可以将编译后的函数直接存储在变量中 这对我很有用 not指向函数的指针 也就是说 如果我有一个函数 foo 我想创建一个足够大的 char 缓冲区来容纳为 foo 生成的机器指令 然后能够通过某种方式告诉 C
  • 将值从 for 循环转换为 json 格式

    下面是一个 for 循环的片段 我在其中对 txt 文件名进行排序 然后我尝试将结果保存在 json 格式文件中 但是 由于最后一个原因 它会导致无效的 json 格式 插入obj 我如何将 for 循环中的值转换为 json 格式 scr
  • PHP MySQLi OOP 中“->”和“::”的区别

    谁能说出两者之间的区别mysqli gt commit and mysqli commit 标头在这一页 http php net manual en mysqli commit php is mysqli commit 但在示例中他们使用
  • JSTL 访问哈希图中的整数/长键

    我在 JSTL 中使用 EL 时遇到一些问题 无法按照我的意愿访问 Java Hash Map 我知道在 EL 中 如果 Integer 被作为 Long 访问 则该键是关键 我尝试在 JSTL 中访问以下哈希映射定义 Map
  • Mocha 测试的伊斯坦布尔代码覆盖率

    我正在努力让伊斯坦布尔运转起来 在伊斯坦布尔跑步结束时 我不断收到此消息 未收集覆盖范围信息 退出而不写入覆盖范围 信息 我已经尝试了网上能找到的所有方法 如您所见 scripts start node bin start js test
  • 以特定格式将“词典的词典”写入 .csv 文件

    我正在从多个 csv 文件生成一个字典 它看起来像这样 示例 dtDict AV IM 1 13991730 6 1 2014 0 10 0 96 6 1 2014 0 15 0 92 6 1 2014 0 20 0 97 AV IM 1
  • Admob 显示测试广告,但不显示真实广告

    我正在使用 admob 来展示 Android 广告 测试广告运行良好 但未显示真正的广告 另外 我对真正的插页式广告没有任何问题 因为它们工作得很好 只是真正的横幅广告没有出现 我的java代码是 private Interstitial
  • 在传递给模拟函数的参数上调用成员函数的最简单方法是什么?

    给定接口 class IFooable virtual void Fooable 0 class IFoo virtual void Foo IFooable pFooable 0 和古尔模拟模拟 class TMockFoo public