我正在使用Google Mock嘲笑Arduino millis
方法。此方法返回自设备启动以来的毫秒数。我想在每次方法调用时返回增加的数字(范围0到无穷大)。
到目前为止,我正在嘲笑这个函数:
EXPECT_CALL(*arduino, millis())
.WillOnce(Return(0))
.WillOnce(Return(1))
.WillOnce(Return(2))
// and so on...
但这是不切实际的。是否有一种更好的方式适用于无数次呼叫?
答案 0 :(得分:3)
您可以编写一个自定义操作,该操作将返回递增的数字并在WillRepeatedly
中使用它:
ACTION(ReturnIncreasingIntegers) {
static int n = 0;
return ++n;
}
EXPECT_CALL(*arduino, millis())
.WillRepeatedly(ReturnIncreasingIntegers());
但我会建议反对。测试的确定性越低,就越难理解那里的测试代码的行为。