0

私は 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 が発生します。

4

2 に答える 2