小编Teg*_*gan的帖子

尝试在 gmock 中匹配 c 样式数组在编译时失败

背景:

\n

我正在模拟硬件 i2c 传输函数,并尝试匹配传递给它的数组。这是在嵌入式环境中,因此需要 C 风格的数组并且缺少 STL 容器。

\n

尝试匹配我的第二个参数,即 c 样式数组(下面的缓冲区),在编译时失败。

\n

设置:

\n

接口定义为:

\n
virtual I2C_Status_e i2c1Transmit(uint8_t address, \n                                  const uint8_t buffer[], \n                                  uint8_t length) = 0;\n
Run Code Online (Sandbox Code Playgroud)\n

我将我的测试模拟设置为:

\n
MOCK_METHOD(I2C_Status_e,\n            i2c1Transmit,\n            (uint8_t address, const uint8_t buffer[], uint8_t length),\n            (override));\n
Run Code Online (Sandbox Code Playgroud)\n

二进制文件中的调用点(此传输发送单个 8 位命令):

\n
status = hal->i2c1Transmit(address, readStatusCommand, 1);\n
Run Code Online (Sandbox Code Playgroud)\n

其中 readStatusCommand 默认为:

\n
const uint8_t readStatusCommand[1] = {0x00};\n
Run Code Online (Sandbox Code Playgroud)\n

测试代码:

\n

这里 readStatusCommand 具有与上面相同的签名。

\n
EXPECT_CALL(hal, i2c1Transmit(address0, ElementsAreArray(readStatusCommand, 1), txLength))\n    .WillOnce(Return(HAL_Ok));\n
Run Code Online (Sandbox Code Playgroud)\n

编译器输出:

\n …

c++ googletest googlemock

5
推荐指数
1
解决办法
605
查看次数

标签 统计

c++ ×1

googlemock ×1

googletest ×1