私は C# と Moq の初心者です。次のようなコードがあり、Moq を使用して単体テストを行いたいと考えています。
Data.Foo.FooDataTable tbl = Adapter.GetFooByID(id);
foreach (Data.Foo.FooRow row in tbl)
{
x = row.bar
...
}
モックを設定するにはどうすればよいですか? 現在の失敗した試行:
var adapter = new Mock<FooTableAdapter>();
var table = new Mock<Foo.FooDataTable>();
var rows = new Mock<DataRowCollection>();
var row = new Mock<Foo.FooRow>();
rows.Setup(x => x.GetEnumerator().Current).Returns(row.Object);
table.Setup(x => x.Rows).Returns(rows.Object);
adapter.Setup(x => x.GetFooByID(1)).Returns(table.Object);
_adapter = adapter.Object;
行を追加しようとしないと、foreach で NullReferenceException が発生します。行を追加しようとすると、System.NotSupportedException: Type to mock must be an interface or an abstract or non-sealed class が発生します。