2017-09-11 3 views
0

je fonction raillé qui a un argument de référence:GMock: Capturer un argument de référence en fonction moqué

MOCK_METHOD(func, void(MyObj &obj); 

J'aimerais capturer obj dans une variable afin que je puisse appeler des méthodes sur elle en les tests unitaires. Donc, quelque chose comme:

MyObj *capturedObj; 
EXPECT_CALL(foo, func(testing::_)).WillOnce(<capture arg into capturedObj>); 
capturedObj->bar(); 

Comment puis-je y parvenir?

Répondre

0

Vous pouvez écrire un custom action pour elle:

ACTION_P(SaveArgAddress, p) { 
    p = &arg; 
} 

puis utilisez cette action.

Mais sachez que capturedObj sera initialisé que lorsque vous exécutez votre code en cours de test et seulement si le EXPECT_CALL correspond effectivement à un appel - pas juste après que vous exécutez la macro EXPECT_CALL.