使用 Google Mock 的 Mock 方法实现
Mock method implementation using Google Mock
我正在使用 Google Mock 模拟 Arduino millis
方法。此方法 returns 自设备启动以来的毫秒数。我想 return 在每次方法调用时增加数字(范围从 0 到无穷大)。
到目前为止,我是这样模拟这个函数的:
EXPECT_CALL(*arduino, millis())
.WillOnce(Return(0))
.WillOnce(Return(1))
.WillOnce(Return(2))
// and so on...
但这不切实际。有没有更好的方法可以处理无限次调用?
您可以编写自定义操作 return 递增数字并在 WillRepeatedly
:
中使用它
ACTION(ReturnIncreasingIntegers) {
static int n = 0;
return ++n;
}
EXPECT_CALL(*arduino, millis())
.WillRepeatedly(ReturnIncreasingIntegers());
但我不建议这样做。测试的确定性越低,就越难理解被测代码的行为。
我正在使用 Google Mock 模拟 Arduino millis
方法。此方法 returns 自设备启动以来的毫秒数。我想 return 在每次方法调用时增加数字(范围从 0 到无穷大)。
到目前为止,我是这样模拟这个函数的:
EXPECT_CALL(*arduino, millis())
.WillOnce(Return(0))
.WillOnce(Return(1))
.WillOnce(Return(2))
// and so on...
但这不切实际。有没有更好的方法可以处理无限次调用?
您可以编写自定义操作 return 递增数字并在 WillRepeatedly
:
ACTION(ReturnIncreasingIntegers) {
static int n = 0;
return ++n;
}
EXPECT_CALL(*arduino, millis())
.WillRepeatedly(ReturnIncreasingIntegers());
但我不建议这样做。测试的确定性越低,就越难理解被测代码的行为。