2011-09-09 4 views
0

부분 스텁에 대해서는 this question을 보았습니다. 그러나 내가 알아야 할 것이 무엇인지 말해주지 않았습니다.부분 스텁을 사용하는 동안 Moles의 스텁 클래스 메서드에 할당

내가 (DataService를 들어, 내가 SDataService을 사용하고,의 말을하자) 클래스에 대한 두더지 스텁을 사용하고 있다면, 나는 그래서 trueCallBase 속성을 설정할 수 있습니다, 이해는 대한 위임이없는 경우 특정 메소드의 경우 기본 구현의 메소드가 호출됩니다. 좋아,하지만이 경우 특정 메서드에 대리자를 어떻게 할당합니까?

내가 할 수있는 방법이 없다면, 나는 이라고 말하면서 내가 스터브 인 SIDataService이라고 말합니다. 대리자를 메서드에 쉽게 할당 할 수 있습니다. 그러나 주어진 메소드에 대한 델리게이트가 없다면 DataService (구현은 IDataService)에 해당 메소드를 호출하도록 어떻게 호출해야합니까?

감사합니다.

편집 :

나는 방법은 위의 첫 번째 시나리오에서 재정의 할 가상 할 필요가 있음을 이제 참조하십시오. 나는 그것이 전체적으로 많은 의미를 지니지는 않는다고 생각하지만 그것이 그것이 무엇인지입니다.

그래서 두 번째 시나리오에 초점을 맞추어 Behavior을 만들어야합니까? (왜 두더지가있는 것처럼 스텁을위한 스톰이 없습니까?) 아니면 더 간단한 방법이 있습니까?

+0

코드 샘플을 제공 할 수 있습니까? 인터뷰를 보셨습니까? 메소드가 가상 클래스가 아닌 경우 클래스의 MInterface에 모의 객체를 만들 수 있습니다. – Peter

+0

@peer 처음에는 메소드가 가상 일 필요가 있음을 알지 못했습니다. 이것은 Pex 컨텍스트가 아닙니다. 어쨌든'MInterface '를 사용할 수 있습니까? – Andrew

답변

0

대리인 (우회로)은 몰 유형과 동일한 방식으로 스텁 유형으로 설정됩니다. 예를 들어 SIDataService.GetMemberProfile()은 다음과 같이 모의 객체를 반환하도록 구성됩니다.

var memberMock = new Member() { Firstname="Joe", LastName="Schmoe" }; 
var stub = new SIDataService(); 
stub.GetMemberProfileMember = i => memberMock; 
+0

고마워요.하지만 그 질문에는 답이 없습니다. 모든 메서드에 대한 대리자를 만드는 것보다는 실제 개체의 메서드를 기본값으로 설정하는 방법을 찾고 있습니다. 즉, 특정 객체의 메서드를 사용하도록 대리인을 정의하지 않은 * 모든 메서드를 원합니다. – Andrew