모의 함수가있는 단위 테스트 코드가 있습니다 foo
. 액션을 지정하기 위해 ON_CALL 구문을 사용하면 my_action을 수행하지 않고 foo 만 실행합니다.ON_CALL은 작동하지 않지만 EXPECT_CALL은 작동합니다.
ON_CALL(my_mock, foo(my_matcher()))
.WillByDefault(DoAll(my_action(), Return(0)));
그러나 내가 EXPECT_CALL을 실행하면 작동합니다. 필자의 경우 foo()는 한 번만 호출됩니다. 나는 그것이 어떻게 다를 수 있는지 보려고했습니다. 그러나 검색이나 stackoverflow 검색 도움이되지 않았다. 아래는 작동하는 EXPECT_CALL입니다.
EXPECT_CALL(my_mock, foo(my_matcher()))
.WillOnce(DoAll(my_action(), Return(0)));
동일한 my_matcher 및 my_action을 사용하면 어떻게 다른지 알 수 없습니다.
감사합니다.하지만 제 질문에 답변하지 않았습니다. 두 경우 모두 동일한 입력으로 동일한 단위 테스트를 실행하기 때문에 기대치가 충족됩니다. EXP_CALL이 수행하는 동안 ON_CALL로 인해 my_action이 실행되지 않는 이유는 무엇입니까? – Gops
내가 말했듯이'ON_CALL'은 호출에 의해 기대가 충족 될 때에 만 실행될 수 있습니다. 'EXPECT_CALL'을 정의하지 않으면 성취 할 것이 없습니다. – VladLosev