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 并要求收集 IJobs。我可以很好地解决这个问题,但如果没有大量工作,我就无法改变集合大小。

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

如何创建 IJobFactory.CreateJobs 的存根,以便我取回 IJob 存根的集合,例如 5 个左右,其中每个 IJob 存根的 Id 都不同。id 可以是 1 到 5,这样会很好用。

4

1 回答 1

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 传递给此方法。

于 2009-07-01T09:53:48.843 回答