サーチ…
IEnumerableを欺く
IEnumerable
から継承したインターフェイスをIEnumerable
して缶詰データを返すのは、かなり簡単です。次のクラスを想定します。
public class DataClass
{
public int Id { get; set; }
}
public interface IEnumerableClass : IEnumerable<DataClass>
{
}
次のアプローチをとることができます。最初に、モックによって返される必要がある情報を含むリストを作成します。
IList<DataClass> list = new List<DataClass>();
for (int i = 0; i < 10; i++)
{
list.Add(new DataClass { Id = 20 + i });
}
次に、 IEnumerable
クラスのモックを作成し、そのGetEnumerator
メソッドを設定して、リストの列挙子を返します。
var mock = new Mock<IEnumerableClass>();
mock.Setup(x => x.GetEnumerator()).Returns(list.GetEnumerator());
これは次のように検証できます:
int expected = 20;
foreach (var i in mock.Object)
{
Assert.AreEqual(expected++, i.Id);
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow