2
voidを返すリポジトリでAddメソッドを単体テストしたいと思います。私は、データベースにヒットせずに要素の実際の追加をテストすることに興味があります(Addが呼び出されたかどうかは関係ありません)。これは正しい方法ですか?.CallbackはMoqを使ってvoid戻りメソッドをモックする正しい方法ですか?
var list = new List<Foo>();
var repo = new Mock<IFooRepository>();
repo.Setup(x => x.Add(It.IsAny<Foo>()))
.Callback((Foo f) =>
{
list.Add(f);
});
repo.Object.Add(new Foo { FooId = 1 });
Assert.IsTrue(list.Any(x => x.FooId == 1));
内部リストに何かが追加されたことをテストしたいようです。ここでモックを使用しているのであれば、代わりにあなたのクラスに偽のデータベースを渡すのはなぜですか? – IanNorton
このコードでは、Addメソッドが非常に複雑な方法で呼び出されたことを確認しています –