1

IJob の形式でジョブ オブジェクトを作成するファクトリがあります。

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

インターフェイス IJob は 3 つのことを定義します

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

JobManager というクラスであるファクトリのコンシューマーをテストしようとしています。ジョブ マネージャーは IJobFactory を呼び出し、IJob のコレクションを要求します。私はそれを問題なくスタブ化できますが、多くの作業を行わなければコレクションのサイズを変更することはできません。

範囲を取り戻すためにコレクションをスタブ化する簡単な方法はありますか?

IJob スタブのコレクションを取得するような方法で IJobFactory.CreateJobs のスタブを作成するにはどうすればよいですか。たとえば、各 IJob スタブの Id が異なる 5 つほどです。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 に答える