나는 클래스가 같은 아래에 언급 한 말을 가지고모의 방법
class A
{
void show()
{}
int data(int x)
{}
.....
};
내가 클래스를 조롱 할 필요가 - 멤버 함수가 가상하지 않기 때문에 - 나는 아래에 언급처럼 내 모의 클래스를 디자인 할 수 있습니다 :
class MockA : public A
{
MOCK_METHIOD0(show, void());
MOCK_METHIOD1(data, int (int));
}
나는이 방법을 구현할 수 있으며, 의 클래스 A의 기능을 조롱을 놓치지 MockA에서 기회가? MockA를 사용하여 생성 된 객체는 어쨌든 클래스 A 실제 메소드 구현을 호출합니다.
그러나 MockA로 개체를 만들면 위의 메서드가 실제 구현을 재정의하지 않을까요? – Prakash
"실제 구현을 재정의"한다는 것이 확실하지 않습니다. 비 - 가상 메소드는 이름으로 링크되므로, 컴파일러는 예를 들어, 'A :: show' 또는'MockA :: show' 중 하나입니다. 가상 메소드의 경우조차도 모의 객체는 일반적으로 구현 객체로부터 상속받지 않지만, 구현 객체도 상속받는 인터페이스에서 가져온다. –