2009-06-19 2 views
1

난의 소비자를 테스트하기 위해 노력하고 코뿔소 모의 객체는 - 공장 비웃음

Public Interface IJobFactory 
    Function CreateJobs(ByVal cacheTypes As CacheTypes) As IEnumerable(Of IJob) 
End Interface 

인터페이스 IJob 세 가지

Public Interface IJob 
    Sub Execute() 
    ReadOnly Property Id() As Integer 
    ReadOnly Property JobType() As JobType 
End Interface 

을 정의 IJob

의 형태로 작업 개체를 만드는 공장 이 팩토리는 JobManager라는 클래스입니다. 작업 관리자는 IJobFactory를 호출하고 IJob 컬렉션을 요청합니다. 나는 그것을 잘 뽑아 낼 수는 있지만, 많은 작업을하지 않고는 컬렉션 크기를 변경할 수는 없습니다.

범위를 다시 얻을 수 있도록 컬렉션을 스텁링하는 간단한 방법이 있습니까?

IJob 스텁의 콜렉션을 다시 얻는 방식으로 IJobFactory.CreateJobs의 스텁을 만들 수 있습니다 (예 : 5 개 정도). 각 IJob 스텁의 ID가 다른 경우. ID는 1에서 5까지 가능하며 큰 도움이됩니다.

답변

1

내가 공장에 기대 (검증되지 않은 C#을 표기) 설정하는 도우미 함수 생성 할 것이다 :

private List<IJob> SetExpectedJobs(MockRepository mocks, IJobFactory factory, int n) 
{ 
    List<IJob> result = new List<IJob>(); 
    for(int i=1; i<=n; i++) 
    { 
     IJob job = mocks.CreateStub<IJob>(); 
     Expect.Call(job.Id).Return(i).Repeat.Any(); 
     result.Add(job); 
    } 
    Expect.Call(factory.CreateJobs(null)).Return(result).IgnoreArguments(); 
    return result; 
} 

을하고 테스트의 시작 부분에 기대를 설정할 때이 함수를 호출합니다. 아마도 cacheTypes도이 메서드에 전달해야합니다.

관련 문제