2015-11-19 106 views
3

我在模仿使用Google Mock的Arduino millis方法。该方法返回设备启动后的毫秒数。我想在每次方法调用时返回增加的数字(范围从0到无穷大)。使用Google模拟的模拟方法实现

到目前为止,我嘲笑这个功能类似:

EXPECT_CALL(*arduino, millis()) 
    .WillOnce(Return(0)) 
    .WillOnce(Return(1)) 
    .WillOnce(Return(2)) 
    // and so on... 

但这是不切实际的。有没有更好的方法可以处理无数次呼叫?

回答

3

你可以写一个自定义操作,将返回递增的数字和WillRepeatedly使用它:

ACTION(ReturnIncreasingIntegers) { 
    static int n = 0; 
    return ++n; 
} 

EXPECT_CALL(*arduino, millis()) 
    .WillRepeatedly(ReturnIncreasingIntegers()); 

但我建议不要这一点。您的测试越不确定,就越难理解那里测试的代码的行为。