2010-07-12 63 views
5

我在RhinoMocks中找出Arg選項的正確參數時遇到了問題。Rhino Mocks - 正確使用Arg <T> .Ref

我想模擬MSIRecordGetString方法有一個參考Int32參數。目前我有:

_Api.RecordGetString(Arg<IntPtr>.Is.Anything, 
        Arg<Int32>.Is.Anything, 
        Arg<StringBuilder>.Is.Anything, 
        ref Arg<Int32>.Ref(???, 0).Dummy); 

任何人都可以讓我知道什麼?應該/可以替換爲。我知道它應該是AbstractConstraint類型的東西,但我不確定什麼是有效的。難以找到正確使用的任何示例。

乾杯。

回答

9

我實際上習慣了Moq,但是我對第一個參數的理解是一個約束,但是由於您不特別關心該值(我假設),您可以執行以下操作:

ref Arg<Int32>(Is.Anything(), 0).Dummy 

+0

嗨馬特,謝謝你的回答。不確定的是我得到了這個約束的原因。爲什麼這與不需要抽象約束的Out語法不同? – 2010-07-12 07:57:30

+0

可能是因爲out參數必須分配給ref參數,所以設計思路是ref參數可能有一個預先存在的值可以通過。您現在可以限制它嗎? – 2010-07-12 07:59:04

+1

@MatthewAbbott我認爲在'Arg '和'(Is.Anything(),0).Dummy'之間缺少'.Ref'。所以它應該是'參考Arg .Ref(Is.Anything(),0).Dummy'。 – 2012-01-11 06:43:02