You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GMock:匹配EXPECT_CALL参数的地址

在进行单元测试时,我们通常需要模拟对象的行为和状态。使用Google Mock(GMock)库可以轻松地创建模拟对象和行为。在某些情况下,我们需要匹配参数的地址而不是值。下面是如何在GMock中匹配参数地址的示例。

假设我们有一个名为MyClass的类,它有一个名为MyMethod的方法,并且该方法接受一个指向int的指针参数。我们希望在测试中验证该方法是否已正确地调用

我们可以使用GMock的MATCHER_P()宏创建一个匹配器,该匹配器将参数指针与提供的地址进行比较。然后,我们可以在EXPECT_CALL()中使用这个匹配器。

下面是示例代码:

// MyClass.h class MyClass { public: virtual ~MyClass() {} virtual void MyMethod(int* p) = 0; };

// MyClassMock.h #include "gmock/gmock.h" #include "MyClass.h"

class MyClassMock : public MyClass { public: MOCK_METHOD(void, MyMethod, (int* p), (override)); };

// MyTest.cpp #include "gtest/gtest.h" #include "MyClassMock.h"

using ::testing::_; using ::testing::Matcher; using ::testing::MatcherP; using ::testing::Pointee;

Matcher& IsAddress(int* expected_address) { return MatcherP<int*>(Pointee(expected_address)); }

TEST(MyClassTest, TestMyMethod) { MyClassMock mock; int arg = 42; int* p_arg = &arg;

EXPECT_CALL(mock, MyMethod(IsAddress(p_arg)));

mock.MyMethod(p_arg);

}

在这个例子中,IsAddress()匹配器使用Pointee()匹配器将参数的地址与提供的地址进行比较。该例程的EXIT_CALL()使用这个匹配器来验证MyMethod是否与提供的参数地址一起调用

同样的方法也适用于std::vector等等。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

干货|数据湖储存如何基于 Apache Hudi落地企业基建

=&rk3s=8031ce6d&x-expires=1715962849&x-signature=x5eZExtgmO1xyI3Bjj2KL9QlxR4%3D) Plan Generator 和 MetaServer 之间的交互逻辑为,当 Table Management Service监听到 MetaServer 侧传递的 Instant C... =&rk3s=8031ce6d&x-expires=1715962849&x-signature=r1RrCk0SZiyNzNAD5s7hZo1iTQU%3D) 另一个需要提的点是 Table Management Service 的架构设计。如果说和 MetaServer 一样,作为一个无状态的服务的话,那么...

ByConity 替换 ClickHouse 构建 OLAP 数据平台,资源成本大幅降低

最终在生产环境全量替换 ClickHouse,使资源成本降低超 50%。本文将主要介绍 MetaApp 数据分析平台的功能,业务场景中遇到的问题及解决方案以及引入 ByConity 对其业务的帮助。 MetaApp OLAP 数据分... =&rk3s=8031ce6d&x-expires=1716049236&x-signature=uTngDC30S9Pss7%2BgmOtfcnQPsm4%3D)![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/842a0896fde5422a93435054b424f03...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

GMock:匹配EXPECT_CALL参数的地址 -优选内容

干货|数据湖储存如何基于 Apache Hudi落地企业基建
=&rk3s=8031ce6d&x-expires=1715962849&x-signature=x5eZExtgmO1xyI3Bjj2KL9QlxR4%3D) Plan Generator 和 MetaServer 之间的交互逻辑为,当 Table Management Service监听到 MetaServer 侧传递的 Instant C... =&rk3s=8031ce6d&x-expires=1715962849&x-signature=r1RrCk0SZiyNzNAD5s7hZo1iTQU%3D) 另一个需要提的点是 Table Management Service 的架构设计。如果说和 MetaServer 一样,作为一个无状态的服务的话,那么...
ByConity 替换 ClickHouse 构建 OLAP 数据平台,资源成本大幅降低
最终在生产环境全量替换 ClickHouse,使资源成本降低超 50%。本文将主要介绍 MetaApp 数据分析平台的功能,业务场景中遇到的问题及解决方案以及引入 ByConity 对其业务的帮助。 MetaApp OLAP 数据分... =&rk3s=8031ce6d&x-expires=1716049236&x-signature=uTngDC30S9Pss7%2BgmOtfcnQPsm4%3D)![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/842a0896fde5422a93435054b424f03...

GMock:匹配EXPECT_CALL参数的地址 -相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询