2016-11-29 1 views
0

수신 한 이벤트 유형에 따라 조롱 된 수신기의 결과와 일치합니다. 내가 정의하고 싶은 기대는 "당신은 한 번 같은 유형의 이벤트를 받아야하고 다음을 단언해야합니다. 다른 이벤트는 내게 중요하지 않습니다". 인수가 일치하지 않을 때 EXPECT_CALL의 정규 표현식이 어설 션의 카운터를 증가시키지 않는지 확인하는 방법은 무엇입니까?

는 지금까지
EXPECT_CALL(listener, changed(Field(&Event::type, Event::Type::processed)).WillOnce(/*Blablabla*/); 

은 이론적으로 내 청취자가이 전화를 받아야 작성한 주장이다. 하나의 이벤트 :: 유형 :: 처리 및 하나의 이벤트 :: 유형 :: 완료. 나는 명시 적으로 후자에 대해 "주장"하고 싶지 않습니다. Matcher가 Event :: Type :: processed, WillOnce 트리거를 성공적으로 일치시킬 것으로 보이지만 테스트가 끝날 때 내 예상 Times (1)은 포화 상태라는 것을 알 수 있습니다. 두 번째 이벤트 (Event :: Type :: processed)와 일치하지 않습니다. 여전히이 예상의 전반적인 카운터를 증가시킵니다 ...

나는 그 주위에서 내 방식을 찾을 수 없습니다.
VerifyAndClear는 이러한 두 가지 이벤트가 한 번의 호출에서 발생하고이를 분리 할 의도가 없으므로 여기서 도움이되지 않는다고 말할 수는 없지만 내 모델에는 의미가 없습니다.

답변

0
{ 
    testing::InSequence s; 
    EXPECT_CALL(listener, changed(Field(&Event::type, Event::Type::processed)).WillOnce(/*Blablabla*/); 
    EXPECT_CALL(listener, changed(_)).Times(testing::AnyNumber()); 
} 

이 트릭을 수행해야합니다.

+0

감사합니다. 시퀀스와도 관련이 있다는 느낌이 들었지만 지옥이 쉽지는 않습니다. – tbop

관련 문제