2017-05-22 2 views
0

변수 이름, 즉 식별자에 EXPECT_CALL하기 불투명 한 유형이며 일부 다른 함수에서 전역 집합이므로 그래, 그것을 stub해야합니다. 여기 구글의 모의는 어떻게 호출 내가 즉</p> <p><code>EXPECT_CALL(MockClass_obj, target_func());</code></p> <p>서명을 감지 할 수있는 기능이

문제입니다 :

//MockClass inherits Class, call f1() with instance of MockClass 
void f1(int a, Class & obj) 
{ 
    switch(a): 
    { 
    case 0: 
     obj.target_func(global_handle_1); 
     break; 
    case 1: 
     obj.target_func(global_handle_2); 
     break; 
    default: 
     obj.target_func(global_handle_3); 

    } 
} 

질문 내가 전화를 기대하려면 어떻게

: 나는 테스트입니다 함수 내, 내가 촬영 한 가지에 따라 몇 가지 다른 인수 MockClass::target_func 전화 인수의 이름을 기반으로합니까? 나는 어떤 경로가 취해 졌는지 탐지 할 필요가있다. 모든 global_handle_[x] 변수, 즉 밖으로 스텁 임의의 값으로 설정되기 때문에

, 나는 global_handle_<x>=<x>로 설정할 수 있습니다 다음 EXPECT_CALL(MockClass_obj, target_func(<x>));

내가 이상적으로 내가 EXPECT_CALL 싶습니다, 그만큼 좋은 그러나보다 강력한 것으로 추측 변수 이름에?

이것이 가능합니까?

답변

2

C++에서는 기본적으로 요구하지 않는 것이 있습니다. target_func은 값에 의해 인수가 전달되므로 값을 계산하는 방법을 알기위한 방법은 없습니다 (또는 조롱 된 버전). 호출은 obj.target_func(global_handle_1);이거나 obj.target_func(global_handle_2 - 1); 일 수 있습니다 (이러한 표현식이 동일한 값을 갖는 경우).

각 글로벌 변수에 고유 한 값을 부여한 다음 EXPECT 올바른 값을 지정하는 것이 가장 좋은 방법이라고 생각합니다. 나는) a) 공간을 고유 값을 잘 떨어져; b) 사람들이 핸들 값에 대한 산술을 수행하는 것을 확인하기 위해 코드 리뷰에 의존합니다. target_fun 그것을 참조로 인수의했다 경우

는, 당신은 참조의 주소를 기반으로 EXPECT을 할 수 있습니다 -하지만 난 귀찮게하지 않을 것입니다.

관련 문제