2012-03-20 7 views
3

나는 다음 코드를 가지고 있지만 테스트하는 방법을 찾을 수 없다. 나는 MethodeUnderTest를 테스트해야합니다. ABaseClass는 라이브러리에있는 그대로 변경할 수 없습니다. 그러나 AClass를 테스트하려면 theThing이 반환하는 것을 설정할 수 있어야합니다. 누구든지 이런 유형의 코드 테스트에 대한 아이디어 나 경험이 있습니까?상속받은 C# 클래스 테스트

public ABaseClass 
{ 
    protected ThingBaseClass theThing {get;} 
    public virtual .... 
    ... 
} 


public AClassUnderTest : ABaseClass 
{ 
    public MyThing Thing 
    { 
    get 
    { 
     return (MyThing)base.theThing; 
    } 
    } 

    public void aMethedUnderTest() 
    { 
    Thing.doSomething(); 
    } 
} 

참고 : TheThing의 초기 값은 null입니다. theThing에는 공용 설정자가 없습니다.

+0

왜 Thnig 값을 확인할 수 없습니다 (이 더 세터가 없다하더라도) MOQ를 사용 theThing을 설정할 수 있습니까? 그것은 AClass의 재산입니다. – Tigran

+0

theThing을 확인할 수는 있지만 값을 설정하지 않았습니다. –

답변

1

난 당신이 AClass.Thing이 ABaseClassMock.theThing

+0

나는 Thing이 테스트 할 수 없다고 생각하지만, Thing을 사용하는 다른 메소드는 조롱을 사용하여 테스트 할 수있다. 아니면 polymorthic 상속을 사용하고 무시할 수 있습니다. –

0

당신은 두더지처럼 라이브러리를 조롱 사용할 수 있습니다와 같은 결과를 반환하는 경우 확인 후 ABaseClass을 상속 모형을 만들고 수 있다고 생각합니다. 따라서 테스트 코드에서 "물건"의 값을 설정할 수 있습니다. http://research.microsoft.com/en-us/projects/moles/

0

당신은 ABaseClass의 실물 크기의 모형을 만들고 여전히

var mock = new Mock<ABaseClass>(); 
mock.SetupGet(x => x.theThing).Returns(\*Whatever you need*\); 
+0

클래스가 무언가를 반환한다고 말하는 것처럼이 대답의 코드에 오류가 있습니까? –

+0

예, 오타를 업데이트했습니다. 이 속성은 호출 될 때 뭔가를 반환한다고합니다. –

관련 문제