C# Rhino Mocks-正确使用Arg<;T>;。裁判

C# Rhino Mocks-正确使用Arg<;T>;。裁判,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,在Rhinomock中,我很难找到Arg选项的正确参数 我试图模拟具有ref Int32参数的msicRecordGetString方法。目前我有: _Api.RecordGetString(Arg<IntPtr>.Is.Anything, Arg<Int32>.Is.Anything, Arg<StringBuilder>.Is.Anything,

在Rhinomock中,我很难找到Arg选项的正确参数

我试图模拟具有ref Int32参数的msicRecordGetString方法。目前我有:

_Api.RecordGetString(Arg<IntPtr>.Is.Anything,
                     Arg<Int32>.Is.Anything, 
                     Arg<StringBuilder>.Is.Anything, 
                     ref Arg<Int32>.Ref( ???, 0).Dummy);
\u Api.RecordGetString(Arg.Is.Anything,
Arg.Is.任何东西,
Arg.Is.任何东西,
参考参数参考(?,0).Dummy);
谁能告诉我什么???应/可替换为。我知道它应该是AbstractConstraint类型的东西,但我不确定什么是有效的。很难找到正确用法的例子


干杯。

我实际上已经习惯了最低起订量,但我对第一个参数的理解是有限制的,但鉴于您并不特别关心这个值(我假设),您能做以下几点吗:

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

嗨,马特,谢谢你的回答。不过,我不太确定我是否了解这种限制的原因。为什么这不同于不需要抽象约束的Out语法?可能是因为Out参数必须指定给,而ref参数没有,所以设计思想是ref参数可能有一个预先存在的值要传入。你可以在这一点上约束它吗?@MatthewAbbott我认为
Arg
之间缺少
.Ref
(is.Anything(),0).Dummy
。因此,它应该是
ref Arg.ref(Is.Anything(),0).Dummy
。对于阅读本文的人,不要忘记
Is.Anything()
后面的参数。我得到的编译器错误不是很直观。如果必须传入一个具体的类实例,这难道不符合目的吗?