2010-07-19 3 views
2

일반적으로 조롱하는 프레임 워크와 Rhino가 가상 메서드가있는 인터페이스 및 클래스 만 조롱하는 것은 사실입니까? 예를 들어 간단한 수업을 따라 가면 어떻게 할 수 있습니까?모킹 없음 인터페이스 클래스

public class MyClass 
{ 
    void method1() 
    { 
     //some code goes here 
    } 
} 

대답이 사실이라면 왜 그러한 제한이 존재합니까? 해결 방법이 있습니까?

답변

5

조롱 프레임 워크가 가상 또는 인터페이스없이 method1을 변경할 수 없으므로 제한 사항이 있습니다. 인터페이스는 개발자가 의존성을 분리 할 수있게 해주고 좋은 코드 인 IMO의 일반적인 특징이기 때문에 합당한 한계가 있습니다. 안타깝게도 .Net 프레임 워크의 대부분은 가상 메소드 나 인터페이스를 가지고 있지 않습니다 ... 인터페이스를 생성하기 위해 추한 배치가 필요합니다.

정말로 마음에 들지 않으면 CLR에 몇 가지 미친 마법 foo를 연결하여 제한을 초과하는 조롱 프레임 워크 옵션을 하나 밖에 사용할 수 없습니다. 그 famury는 TypeMock Isolator이라고합니다.

+0

두더지는 아직 실험 및하지만 당신은 MS 두더지를 사용하여 유사한 방법으로 비 인터페이스 또는 정적 호출을 우회 할 수없는 전체 조롱 프레임 워크 : http://research.microsoft.com/en- 우리/projects/moles/ –

+0

Brian - 나는 그것을 "미친 마법의 foo"라고하지 않을 것입니다. 그것은 단지 Microsoft 프로파일 링 API입니다 (http://msdn.microsoft.com/en-us/library/bb384382%28VS.90%29.aspx). :) – PatrickSteele

+0

@Patrick Steele : 충분히 공정해. 그냥 미친 마법 foo 같은 느낌 :) –

1

인터페이스를 구현하지 않았거나 가상 메서드가있는 클래스를 조롱하는 방법을 잘 모르겠습니다. 일부 코드가 MyClass의 인스턴스를 예상하고 MyDerivedMockClass의 인스턴스를 전달하면 재정의 된 가상 멤버가 아니기 때문에 MyClass 멤버는 MyDerivedMockClass 멤버가 아니라 MyDerivedMockClass 멤버에 액세스됩니다.

관련 문제