在gmock中设置自定义值为void指针
Setting custom value to void pointer in gmock
我使用Google Mock对我的C实现进行单元测试。对于我的一个模拟函数,out参数被定义为void指针。mock函数如下所示:
MOCK_METHOD3(file_read, int(const char *file_name, const char *type_name, void *data_p));
根据如何设置一个值在谷歌模拟测试模拟方法的无效*参数?
我创建了ACTION_P
ACTION_P(SetArg2ToMCValue, value) { reinterpret_cast<void *>(arg2) = value; }
在我的测试代码中,我将默认值设置为在ACTION_P和我的期望中转换为void的参数
struct.a = 5.0;
struct.b = 15.0;
//Expectations
EXPECT_CALL(*libfile_mock, file_read(_,_,_)).WillOnce(DoAll(SetArg2ToMCValue(&struct), Return(0)));
当测试运行时,我看不到自定义值,我设置为结构体。我看到的是0。我如何将值设置为一个输出参数,这也是一个在谷歌模拟空指针?
经过一番搜索,我发现arg2已经是一个void指针,因此我需要将其转换为ACTION_P内的结构类型。
ACTION_P(SetArg2ToMCValue, value) { *reinterpret_cast<struct *>(arg2) = *value; }
这个工作。
相关文章:
- 如何在 C++ 中将 void 函数传递给 void 指针
- 将通用引用强制转换为可调用的 void 指针,反之亦然
- C++为 void 指针分配一个字符串
- 为什么在将 void 指针转换为整数指针时出现分段错误
- 取消引用 void 指针以将值分配给结构
- C 与 C++,处理 void** 指针
- 除了调用全局删除运算符之外,删除一个void指针还能做什么呢
- 用非零值初始化void指针的正确(或最安全)方法
- 将 void 指针分配给另一个 void 指针
- c ++ 我是否需要手动删除指向另一个具体类型的 void* 指针?
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 如何将 std::string 赋回作为 <char>void* 指针传递的 std::vector.data()?
- 将指针传递到结构,与传递 void 指针并强制转换为结构
- 如何在void*指针下检查运行时类型(允许简单类型,没有基类)?
- 用于初始化结构的 void 指针强制转换
- 使用 void 指针:void **ptr.. 如何修改共享内存的值?
- 访问由 void 指针引用的结构的成员
- 你不能在 void 指针上使用指针算法,那么 void 指针数组是如何工作的呢?
- 如何警告 C 中 void 指针上的参数不兼容的类型
- 指向类模板方法的 void 指针的向量