2014-10-05 4 views
0

모의 함수를 호출 할 때마다 액션을 실행하고 싶습니다. ACTION_P를 사용하여 구현하려고했습니다. 내가 상태 만 다른 같은 기대를 여러 번 사용했다,사용자 지정 ACT를 고정 장치 멤버로 사용 - google 테스트

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

문제는 다음과 같습니다

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

그리고 기대가 같은 간다 : 아래의 코드를 참조하십시오. 그래서 코드 중복성을 피하기 위해 테스트 픽스처의 멤버 함수 안에 기대를 두어야했습니다. 그러나 함수는 조명기의 멤버가 아니기 때문에 정의 된 ACTION_P에 액세스 할 수 없습니다.

나는 MATCHERs와 같은 조명기 멤버 인 ACTION을 검색하려고했지만 아무 소용이 없었다.

가능한 해결책이나 대안에 대한 제안 사항이 있으십니까? 어떤 형태의 도움이라도 대단히 감사합니다. 티아!

답변

0

나는 내가 고정의 멤버 함수에 기대를 넣어 필요성을 이해 모르겠지만, 당신은 당신이 INSEQUENCE 사용하여 원하는 동작을 얻을 수 있어야합니다 :

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