2017-10-31 9 views
1

아래 시나리오에서 someExternal.Library.dll에 대한 참조를 추가하고 BaseClass에서 MyClass라는 클래스를 파생 시켰습니다. MyClass는 그 메소드에서 내부적으로 BaseClass의 MakeCall() 메소드를 호출합니다. 여기서 'BaseClass'는 인터페이스를 구현하지 않는 구체적인 클래스이고 MakeCall() 메서드는 가상 메서드가 아닙니다.어떻게 MOQ를 사용하여 기본 클래스 함수 호출을 모의합니까?

기본 클래스의 MakeCall() 메서드 만 모의 어떻게해야합니까?) ( 나는 "MyClass에"나는 'MyClass에'에 대한 단위 테스트를 작성하고자하는 위의 코드에서

public class MyClass : BaseClass 
{ 

public void DoSomething() 
{ 
    //someExternal.Library.dll is referenced to the project 
    // Makecall() is available to this class through inheritance 

    MakeCall(); 
    ... 

} 

    public bool DoSomethingElse() 
{ 
     ... 
    } 
} 

에 대한 단위 테스트를 작성하려면 내가 모의 obj.MakeCall 할 수 있어야한다; MoQ를 사용하는 메소드 호출.

참고 : MOQ 내가 당신의 기본 방법 때문에

답변

1

를 사용할 수 없습니다 둘 다 어떤 인터페이스를 구현하거나 가상으로 표시하고 유일한 조롱 프레임 워크는 프록시를 생성하기 때문에, MOQ는 특정 시나리오에서 당신을 도울 수 인터페이스를 구현하거나 호출을 가로 채기 위해 메서드를 재정의하는 파생 클래스를 만듭니다.

기본 클래스가 어떤 방식 으로든 만질 수없는 레거시 코드가 아닌 경우 인터페이스를 추가하고 직접 조롱하는 것이 좋습니다.

그렇지 않으면, IL 직접 작업 및 봉인 클래스를 조롱 할 수 MOQ 대안에 대한 다음과 같은 대답을 참조하십시오

https://stackoverflow.com/a/21793891/3400897