2014-10-05 85 views
0

我想在每次調用模擬函數時執行動作。我試着用ACTION_P來實現這個。請參見下面的代碼:作爲夾具成員的自定義動作 - 谷歌測試

ACTION_P(CompleteRegistrationWithStatus, status) 
{ 
    arg1->registrationCompleted(status); 
} 

和期望是這樣:

EXPECT_CALL(*mockObj, register(_)).WillOnce(CompleteRegistrationWithStatus(success)); 

問題是,我不得不用同樣的期望多次,只是不同狀態。所以我需要把期望放在測試夾具的成員函數中,以避免代碼冗餘。但是該函數不能訪問我定義的ACTION_P,因爲它不是燈具的成員。

我試圖尋找夾具成員的ACTION,就像MATCHER一樣,但無濟於事。

對於可能的解決方案或備選方案有何建議?任何形式的幫助非常感謝。 TIA!

回答

0

我不知道,我明白必須把期望在夾具的成員函數,但你應該能夠得到你想要使用InSequence的行爲:

{ 
    InSequence s; 
    EXPECT_CALL(*mockObj, register(_)) 
     .WillOnce(CompleteRegistrationWithStatus(success)); 
    EXPECT_CALL(*mockObj, register(_)) 
     .WillOnce(CompleteRegistrationWithStatus(failure)); 
}