2015-11-19 2 views
3

Je me moque de la méthode Arduino millis en utilisant Google Mock. Cette méthode renvoie le nombre de millisecondes depuis le démarrage du périphérique. Je voudrais retourner le nombre augmenté (dans la gamme 0 à l'infini) sur chaque appel de méthode.Mise en œuvre de la méthode maquette en utilisant Google Mock

Jusqu'à présent, je suis moqueur cette fonction comme ça:

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

Mais il est peu pratique. Y at-il un meilleur moyen qui fonctionne sur le nombre infini d'appels?

Répondre

3

Vous pouvez écrire une action personnalisée qui renverra les numéros incrémenter et l'utiliser dans WillRepeatedly:

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

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

Mais je déconseillerais. Moins votre test est déterministe, plus il est difficile de comprendre le comportement du code testé ici.