C++ Google se Moquer de SaveArg : comment enregistrer un argument pointeur

J'ai de la difficulté à l'enregistrement d'un pointeur argument que mon mock reçoit.

#define SIZE_OF_DATA

typedef struct {
    uint32_t someValue1;
    uint16_t someValue2;
    //other values here
} LargeStruct;


class SomeClass {
public:
    //assume sendData is a generic function where data is actually pointer to a LargeStruct
    void sendData(const uint8_t* data, const uint16_t size);
}

class MockClass : public SomeClass {
public:
    MOCK_METHOD2(sendData, void(const uint8_t*, const uint16_t));
};

Je veux sauver le premier argument de sendData (le pointeur) et de regarder les données des points d' (il pointe vers une grande structure, donc je ne veux pas de copie par valeur):

TEST(SomeFixture, sendData_checkSentDataIsValid) {
   MockClass mock;

  const uint8_t *pData;
  EXPECT_CALL(mock, sendData(_, SIZE_OF_DATA)).WillOnce(SaveArg<0>(&pData));

  //do something here that calls sendData()

  //hopefully data should point to the same data that was passed in to the method
  LargeStruct *ls = (LargeStruct *)pData;

  //now verify that the data is ok...
  //some expectations here
  EXPECT_EQ(SOMEVALUEIWANT, ls->someValue1); 

}

Toutefois, les données pointées par pData, à tort je pense que je semble être de sauver la valeur du pointeur dans la structure, plutôt que de sauver le pointeur.

Je pense que le problème réside dans la variable je passe à SaveArg, mais je n'arrive pas à l'obtenir en une version qui compile et qui me donne la bonne réponse. Tous les pointeurs s'il vous plaît?

OriginalL'auteur John | 2014-09-17