2013-05-20 33 views
4

我有一個POCO其即時通訊保存,就像這樣:設置起訂量來增加值時,方法稱爲

_myRepo.Save(somePoco); 

_myRepo被嘲笑,如:

var myRepo = new Mock<IRepo>(); 

當這種保存方法被調用,我想將somePoco.Id設置爲1.

我該怎麼做?

我看到有在.Setup一個Callback方法,但它並沒有通過POCO,如:

myRepo.Setup(x => x.Save(It.IsAny<SomePoco>()) 
    .Callback(x => // how do i get the poco?); 
+0

你能不能到結束訪問你的'somePoco'?如果它被聲明爲局部變量,它應該可以在回調函數中訪問。 – Pako

回答

8

的參數得到傳遞給Callback方法,你只需要明確指定類型。

所以下面應該工作:

myRepo.Setup(x => x.Save(It.IsAny<SomePoco>())) 
     .Callback<SomePoco>(poco => { poco.Id = 1; }); 

參見樣品中quick start

// access invocation arguments 
mock.Setup(foo => foo.Execute(It.IsAny<string>())) 
    .Returns(true) 
    .Callback((string s) => calls.Add(s)); 
相關問題