【问题标题】:rhino mocks ref param constraintrhino 模拟参考参数约束
【发布时间】:2016-03-30 07:23:15
【问题描述】:

我对 RhinoMocks 很陌生(第一次)。

这是我的方法声明:

void SetXmlValue(ref string path, ref string Value);

我需要验证对于给定的输入,当调用 SetXmlValue 时,它​​会使用路径和值的特定值调用

我尝试了几个选项,包括:

_mockClass.Expect(o => o.SetXmlValue(ref Arg<string>.Ref(Rhino.Mocks.Constraints.Is.Equal(path), "somepath").Dummy ,ref Arg<string>.Ref(Rhino.Mocks.Constraints.Is.Equal(value), "somevalue").Dummy));

_mockClass.Expect(o => o.SetXmlValue(ref Arg<string>.Out(path).Dummy, ref Arg<string>.Out(value).Dummy))

但是,我无法确认 SetXmlValue 方法是使用我期望它调用的参数调用的。

任何输入?

【问题讨论】:

    标签: constraints rhino-mocks ref


    【解决方案1】:

    这将验证该方法是否使用正确的参数被调用:

    _mockClass.Stub(x => x.SetXmlValue(null, null))
                       .IgnoreArguments()
                       .WhenCalled(invocation => Assert.AreEqual("somepath", invocation.Arguments[0]));
                       .WhenCalled(invocation => Assert.AreEqual("somevalue", invocation.Arguments[1]));        
    
    _mockClass.VerifyAllExpectations();
    

    编辑 刚刚找到了另一种方法:

     _mockClass.GetArgumentsForCallsMadeOn(x => x.SetXmlValue(null, null));
     Assert.AreEqual("somepath", arguments[0][0]);
     Assert.AreEqual("somevalue", arguments[0][1]);
    

    第二个例子很有用,当我使用 Gherkin 场景时,结果的步骤定义必须是最后一个(这就是为什么我不能事先设置期望)。

    在这种情况下,arguments[0] 包含第一次调用 SetXmlValue() 时的参数,arguments[1] 包含第二次调用 SetXmlValue() 时的参数,依此类推。

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 2020-09-20
      • 2021-01-30
      • 2021-09-04
      • 2021-11-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多