gtest-将模拟函数参数分配()
GTest - Pass Mock function parameter to ASSIGN()
所以我有一个函数,可以说writehw(value)通常写入硬件uint32,但我在嘲笑。我想将输入传递给该模拟功能,然后将其传递给分配操作,以将该值分配给测试本身的本地变量。这样,我可以验证编写的值(通常是通过位操作)是正确的,可以模仿硬件存储。
所以我的参数4是一个输入,它被"写入"到我的模拟硬件(regstorage变量)。
基本上我的模拟期望看起来像这样
EXPECT_CALL(cAdapterMock, ReadByPort(_, _, _, _, _))
.Times(1)
.WillRepeatedly(DoAll(::testing::Assign(®Storage, WHAT-DO-I-PUT-HERE-TO-GET-ARG4-THAT-CAME-INTO-READ-BY-PORT),::testing::Return(0)));
我试图弄清楚如何将Arg4进入readbyport,以便我可以将其放入分配的第二个Parmeter中,以将其放在regstorage中。
我已经成功地使用了动作宏来获取Arg4值,但这似乎真的很愚蠢,所以我认为必须有一种更简单的方法。
ACTION(GetWrittenMauiRegister) { return arg4; }
EXPECT_CALL(cAdapterMock, ReadByPort(_, _, _, _, _)) // #3
.Times(1)
.WillRepeatedly(DoAll(::testing::Assign(®Storage, (UINT32)GetWrittenMauiRegister),::testing::Return(0)));
谢谢!
一个是使用Invoke ..如Gmock中所述 - 当返回类型为void
时如何修改方法参数ProxyReadByPort(arg1, arg2, arg3, arg4) {
::testing::Assign(...., arg2);
return 0;
}
EXPECT_CALL(cAdapterMock, ReadByPort(_, _, _, _, _)
.WillOnce(Invoke(ProxyReadByPort))
btw,时间(1)和willrepeated()工作不好,而是使用willonce。
我发现解决方案是使用savearg(指针),其中n是参数,指针也是您要保存参数的变量。
相关文章:
- Clang-Format 不能正确分配函数参数
- 为什么不接受具有默认分配参数的函数作为 0-arg 生成器?
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- 为模板参数类型中的新对象分配内存
- 如果您为类的一个对象动态分配内存作为参数,会发生什么
- 将数组动态分配到具有指针参数的函数中
- 为什么我需要将默认引用参数定义为 const 以便为其分配一个左值?
- 如何为C++字符串分配空指针参数?
- 分配具有主参数类型的数组时出现问题
- 如何使用每个对象的单个构造函数参数动态分配C++对象数组?
- 可选参数常量引用重新分配
- 使用参数包分配具有变量参数的函数指针
- 将指针作为参数分配给类变量,然后使用它抛出读取访问违规
- 将const char * const参数成员分配给新值
- 将具有可选模板类型参数的函数传递给类构造函数并将其分配给方法
- 如何使用一些参数初始化动态分配的数组中的对象
- 为什么C 可以从左侧推导分配运算符右侧的模板参数
- 分配运算符过载:返回void与返回参考参数
- 分配参数用于测试目的
- Qt信号:将动态分配参数的所有权传递给插槽