21

Returns オブジェクトをアセンブルするときに、モックされた期待値を呼び出すために使用されるパラメーターにアクセスすることは可能ですか?

関連するオブジェクトのスタブを次に示します。そのため、コレクションをモックしようとしています。

Class CollectionValue {
    public Id { get; set; }
}
Class Collection {
    private List<CollectionValue> AllValues { get; set; }
    public List<CollectionValue> GetById(List<int> ids) {
        return AllValues.Where(v => ids.Contains(v.Id));
    }
}

モック化されたオブジェクトに使用される CollectionValues のテスト リストが与えられた場合、既存の ID と存在しない ID を組み合わせる呼び出しを含む、その CollectionValues のリスト内の ID の可能なすべての順列を処理する期待をどのように設定しますか? ? 私の問題は、1 回の呼び出しで考えられるすべての期待値を設定したいという欲求から来ています。元のパラメーターにアクセスできない場合は、特定の呼び出しで毎回テストしたい正確な期待値を簡単に設定できます。

これが私がやりたかったことです。GetById (It.IsAny 制限を修飾したもの) を呼び出すために使用されるパラメーターにアクセスできると便利な場所を表します。

CollectionMock.Expect(c => c.GetById(It.IsAny<List<int>>())).Returns(???);
4

1 に答える 1

61

moqクイックスタートガイドから:

// access invocation arguments when returning a value
mock.Setup(x => x.Execute(It.IsAny<string>()))
                .Returns((string s) => s.ToLower());

したがって、??? を入力できることを示唆しています。なので

CollectionMock.Expect(c => c.GetById(It.IsAny<List<int>>()))
              .Returns((List<int> l) => //Do some stuff with l
                      );
于 2009-06-02T19:49:15.923 に答える