2013-05-31 1 views
0

스텁 된 인터페이스를 만들고 아래에 표시된 것과 같은 테스트 메서드로 전달하고 있습니다. 나는 테스트 메소드에 전달되는 인터페이스 (StubISeries)를 스터 빙하고있다. comparisonSeries.Key이 인터페이스에서 가져 오기 전용 인 경우 인터페이스에 설정된 속성을 추가하지 않고 스텁의 값을 설정할 수 있습니까?스텁이있는 인터페이스에서 속성 설정

var series = new SomeNameSpace.Fakes.StubISeries(); 
series.Key = something to set the key here? 
DateTime date = formReport.ResolveDate(series, DateTime.Now); 

public override DateTime ResolveDate(ISeries comparisonSeries, DateTime targetDate) 
{ 
    switch (comparisonSeries.Key) 
    { 
     case SeriesKey.SomeKey1: 
     case SeriesKey.SomeKey2: 
     case SeriesKey.SomeKey3: 
     case SeriesKey.SomeKey4: 
     case SeriesKey.SomeKey5: 
      return DateHelper.PreviousOrCurrentQuarterEnd(targetDate); 
     default: 
      break; 
    } 

    return base.ResolveDate(comparisonSeries, targetDate); 
} 
+1

이 예 : series.KeyGet =() => keyvalueYouNeed; Stubiseries에 KeyGet 속성이 있어야합니까? – jure

+0

내가 시도 (series.KeyGet =() => SeriesKey.MyKey)하지만 컴파일러는 말합니다 : "소스 유형 '람다'식을 'Microsoft.qyualitytools.testing.fakes.fakesdelegates + func'1'대상 유형으로 변환 할 수 없습니다. – user1186050

+0

위의 표현 아래에 빨간 선이 있었지만 컴파일하고 실행 한 후 사라졌습니다. – user1186050

답변

0

의 다음과 같은 정의를 감안할 때 ISeries 인터페이스와 SeriesKey 열거

public enum SeriesKey 
{ 
    SomeKey1, 
    SomeKey2, 
    SomeKey3 
} 

public interface ISeries 
{ 
    SeriesKey Key { get; } 
} 

당신은 페이크에 의해 생성 된 StubISeries 다음과 같은 테스트를 작성할 수 있습니다. 당신이 "MS 페이크는"당신이 스텁 객체의 속성 GET에 의해 사용되는 대리자를 설정할 수 있습니다 사용하는 경우

[TestMethod] 
public void MyTestMethod() 
{ 
    var stub = new StubISeries(); 
    stub.KeyGet =() => SeriesKey.SomeKey1; 
    Assert.AreEqual(SeriesKey.SomeKey1, ((ISeries)stub).Key); 
}