2017-09-11 5 views
0

Ich habe eine verspottete Funktion, die einen Verweis Argument hat:GMock: Erfassen eines Referenz Argument in einer verspottete Funktion

MOCK_METHOD(func, void(MyObj &obj); 

Ich möchte obj in eine Variable erfassen, so dass ich Methoden auf sie anrufen können in die Unit-Tests. So etwas wie:

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

Wie erreiche ich das?

Antwort

0

Sie können eine custom action für sie schreiben:

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

dann diese Aktion verwenden.

aber bewusst sein, dass capturedObj nur initialisiert wird, wenn Sie Ihren Code im Test laufen und nur dann, wenn der EXPECT_CALL paßt tatsächlich einen Anruf - nicht rechts, nachdem Sie das EXPECT_CALL Makro auszuführen.

Verwandte Themen