2012-01-11 20 views
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)); 
+0

内部リストに何かが追加されたことをテストしたいようです。ここでモックを使用しているのであれば、代わりにあなたのクラスに偽のデータベースを渡すのはなぜですか? – IanNorton

+0

このコードでは、Addメソッドが非常に複雑な方法で呼び出されたことを確認しています –

答えて

3

ここでテストしているのは、Moq自体だけです。あなたは下のレイヤーを模倣してみることができます。あなたがNhibernateを使用している場合は、ISession。

関連する問題