2015-11-19 66 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()); 

但我建議不要這一點。您的測試越不確定,就越難理解那裏測試的代碼的行爲。