2016-12-13 2 views
1

私のユニットテストで追加されたアイテムを追跡したいと思います。私は私のコレクションそうのような設定をしました:Moqで追加されるオブジェクトのセットアップコレクション

var items = new List<IItem>(); 
var mock = new Mock<IItem>(); 
mockCollection.Setup(x => x.AddNew()).Returns(() => 
{ 
    mock.SetupAllProperties(); 
    return mock.Object; 
}).Callback(() => 
{ 
    items.Add(mock.Object); 
}); 

これは動作し、新しい項目がリストに追加されているが、これには問題があるので、いつでものAddNew()メソッドが呼び出され、前回の「モックのすべてのプロパティ"オブジェクトが置き換えられます。

答えて

1

なぜなら、AddNewメソッドにはパラメータがありませんが、コールバックにパラメータを追加したからです(ここで???はどこから来ますか)。代わりに以下を試してください

Mock<IItem> mock=null; 
var items = new List<IItem>(); 
mockCollection.Setup(x => x.AddNew()).Returns(() => 
{ 
    mock = new Mock<IItem>(); 
    mockShipment.SetupAllProperties(); 
    return mock.Object; 
}).Callback(()=> 
{ 
    items.Add(mock.Object); 
}); 
+0

そうです。これは機能します。ありがとう – ShaneKm

関連する問題