2010-07-12 49 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