3 votes

Se moquer de l'effet secondaire pour un paramètre de pointeur constant en utilisant googlemock

Je suis en train d'utiliser googlemock pour les tests unitaires et j'essaie de simuler une méthode qui a un 'paramètre de tableau de sortie':

void MyMock::myFunc(double myVal[2]).

La méthode myFunc est censée stocker des valeurs dans le tableau myVal.

Comment puis-je simuler cet effet secondaire ? J'ai essayé ce qui suit :

double a_mockedValues[] = {1., 2.};
ON_CALL(myMock, myFunc(_)).WillByDefault(SetArgPointee<0>(a_mockedValues));

Mon intention est que l'appelant de myFunc reçoive les valeurs 1. et 2. dans le tableau qu'il passe à la méthode simulée.

Cependant, cette approche ne fonctionne pas. Le compilateur dit quelque chose comme :

cannot specify explicit initializer for arrays

Est-ce que quelqu'un sait comment simuler le comportement d'un tel paramètre ?

Merci.

3voto

rmhartog Points 1002

Il existe en fait un prédicat pour ce cas d'utilisation spécifique : SetArrayArgument (voir Google Mock CookBook

Votre code deviendrait alors :

double a_mockedValues[] = { 1., 2. };
ON_CALL(myMock, myFunc(_)).WillByDefault(SetArrayArgument<0>(a_mockedValues, a_mockedValues + 2));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X