如何在谷歌模拟测试中将int数组传递给mock方法的void *参数?

问题描述 投票:-1回答:1

我正在尝试使用gmock C ++框架模拟SPI接口 - 读,写,传输

例如,SPI-Read签名是bool SPI_Read(void * rdata,int num_bytes);

我已经定义了

int device_info[5] = {0x01, 0x02, 0x03, 0x04, 0x05};

ACTION_P(SetArg0ToIntWithSizeArg1, value) { strcpy_s(static_cast<int*>(arg1), arg2, value); }

EXPECT_CALL(spi_obj, SPI_Read(_,_))
      .Times(1)
      .WillOnce(DoAll(SetArg0ToIntWithSizeArg1(device_info),Return(true)));

我得到编译错误:‘strcpy_s’ was not declared in this scope

这是一种正确的方法吗?

gmock
1个回答
0
投票

strcpy_s是Microsoft的C扩展,能够在运行时检测某些缓冲区溢出错误,它最近被标准化为C11中的可选功能。您引用的错误消息并未表明Google Test或Goolge Mock存在任何问题,但显然您的编译器未配置为了解strcpy_s。请注意,虽然strcpy_s是C11中的一个选项,但它不符合任何C ++标准。您需要将源代码编译为C ++才能使用Google Test或Google Mock。

这取决于你的编译器如何在C ++模式下启用strcpy_s(或者是否可以)。

© www.soinside.com 2019 - 2024. All rights reserved.