在gmock中设置自定义值为void指针

Setting custom value to void pointer in gmock

本文关键字:void 指针 自定义 gmock 设置      更新时间:2023-10-16

我使用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; } 
这个工作