首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rhino Mocks -嘲笑工厂

Rhino Mocks -嘲笑工厂
EN

Stack Overflow用户
提问于 2009-06-19 15:47:39
回答 1查看 826关注 0票数 1

我有一个工厂,它以IJob的形式创建作业对象

代码语言:javascript
复制
Public Interface IJobFactory
    Function CreateJobs(ByVal cacheTypes As CacheTypes) As IEnumerable(Of IJob)
End Interface

接口IJob定义了三件事

代码语言:javascript
复制
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,这将非常有效。

EN

回答 1

Stack Overflow用户

发布于 2009-07-01 09:53:49

我会创建一个帮助器函数来设置工厂的期望(c#表示法,未测试):

代码语言:javascript
复制
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传递给这个方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1018698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档