【问题标题】:Rhino Mocks - Proper usage of Arg<T>.RefRhino Mocks - 正确使用 Arg<T>.Ref
【发布时间】:2010-07-12 07:27:22
【问题描述】:

我无法确定 RhinoMocks 中 Arg 选项的正确参数。

我正在尝试模拟具有 ref Int32 参数的 MSIRecordGetString 方法。目前我有:

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

谁能告诉我什么???应该/可以替换为。我知道它应该是 AbstractConstraint 类型的东西,但我不确定什么是有效的。很难找到任何正确使用的例子。

干杯。

【问题讨论】:

    标签: c# unit-testing rhino-mocks


    【解决方案1】:

    我实际上习惯了起订量,但我对第一个参数的理解是一个限制,但鉴于您并不特别关心值(我假设),您可以执行以下操作:

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

    ?

    【讨论】:

    • 嗨,马特,感谢您的回答。不过,我不确定我是否得到了这种限制的原因。为什么这与不需要抽象约束的 Out 语法不同?
    • 可能是因为out参数必须赋值,而ref参数不需要,所以设计思路是ref参数可能有一个预先存在的值可以传入,此时可以对其进行约束?
    • @MatthewAbbott 我认为.RefArg&lt;Int32&gt;(Is.Anything(), 0).Dummy 之间缺失。所以应该是ref Arg&lt;Int32&gt;.Ref(Is.Anything(), 0).Dummy
    • 对于那些阅读本文的人,不要忘记Is.Anything() 之后的括号。我得到的编译器错误不是很直观。
    • 如果你必须传入一个具体的类实例,这不是违背了目的吗?
    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多