2009-06-19 64 views
1

我有一个工厂,在IJob犀牛制品 - 惩戒工厂

的形式创建工作对象
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 

我想测试的消费者工厂,一个叫做JobManager的类。工作经理调用IJobFactory并要求收集IJob。我可以将它存根好,但是我不能在没有很多工作的情况下改变集合的大小。

有没有一种简单的方法来收集集合,以便我得到范围?

如何创建一个IJobFactory.CreateJobs的存根,以便我找回IJob存根的集合,比如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传递给这个方法。