我有一个工厂,它以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并请求IJobs的集合。我可以很好地解决这个问题,但是我不能在没有大量工作的情况下改变集合的大小。
有没有一种简单的方法来清除这个集合,这样我就可以得到一个范围呢?
如何才能创建一个IJobFactory.CreateJobs存根,这样我就可以得到一个IJob存根的集合,比如5个左右,其中每个IJob存根的Id是不同的。ids可以是1到5,这将非常有效。
发布于 2009-07-01 09:53:49
我会创建一个帮助器函数来设置工厂的期望(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传递给这个方法。
https://stackoverflow.com/questions/1018698
复制相似问题