2009-12-10 123 views

回答

7

我發現我自己,你其實可以做到這一點與起訂量,是這樣的:

var info = new Info { stuff = 1 }; 

textReader.Setup(o => o.Read<CandidateCsv>("", out info)); 

就是這樣:)

+5

這是真的,但是當執行Read時你不能讓Moq改變信息的值。 – 2009-12-11 09:21:04

3

起訂量does not支持嘲笑/ ref參數,但您可以使用使用OutRef的Rhino Mocks來完成它,該方法接受方法中每個out/ref參數的一個參數。

MockRepository mockRepository = new MockRepository(); 

// IService.Execute(out int result); 
var mock = mockRepository.CreateStub<IService>(); 

int mockResult; // Still needed in order for Execute to compile 

mock.Setup(x => x.Execute(out mockResult)).OutRef(5); 
mock.Replay(); 

int result; 

mock.Execute(out result); 

Assert.AreEqual(5, result); 
+3

這不再是正確的。 Moq支持out/ref參數。請參閱http://code.google.com/p/moq/wiki/QuickStart – TrueWill 2010-12-08 20:15:04

+0

@TrueWill - 支持級別沒有變化。你仍然不能期望一個具有某個'ref'參數的方法調用,然後指定該參數被改變爲另一個值。 – 2010-12-08 22:04:05

+0

是真實的,但你可以簡單地聲明一個新的模擬。對安裝後可以更改的內容的限制與缺乏對嘲諷/ ref參數的支持不同。 – TrueWill 2010-12-09 16:02:18