Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rhino mocks 使用rhinomock输出参数_Rhino Mocks - Fatal编程技术网

Rhino mocks 使用rhinomock输出参数

Rhino mocks 使用rhinomock输出参数,rhino-mocks,Rhino Mocks,我显然感到困惑——这是我用我们正在考虑的其他几个框架(NMock、Moq、fakeetisy)完成的任务。我有一个函数调用我想存根。函数调用有一个out参数(对象) 函数调用在代码中多次调用的用例中。调用代码传入参数,包括out参数的NULL对象。我想根据提供的其他参数设置一个预期的OUT参数 如何指定按预期方式填充的对象的预期出站参数NULL、和?到星期天为止,我已经尝试了六种方法,但到目前为止,我的OUTBOUND out参数只能返回NULL。来源: Ref和out参数是特殊的,因为您还必须

我显然感到困惑——这是我用我们正在考虑的其他几个框架(NMock、Moq、fakeetisy)完成的任务。我有一个函数调用我想存根。函数调用有一个out参数(对象)

函数调用在代码中多次调用的用例中。调用代码传入参数,包括out参数的NULL对象。我想根据提供的其他参数设置一个预期的OUT参数

如何指定按预期方式填充的对象的预期出站参数NULL、?到星期天为止,我已经尝试了六种方法,但到目前为止,我的OUTBOUND out参数只能返回NULL。来源:

Ref和out参数是特殊的,因为您还必须 我很高兴。关键字ref和out是mandantory,您需要 字段作为参数。Arg不会让您失望:

User user;
if (stubUserRepository.TryGetValue("Ayende", out user))
{
  //...
}
stubUserRepository.Stub(x =>
  x.TryGetValue(
    Arg.Is("Ayende"), 
    out Arg<User>.Out(new User()).Dummy))
  .Return(true);
用户;
if(stubUserRepository.TryGetValue(“Ayende”,out user))
{
//...
}
stubUserRepository.Stub(x=>
x、 TryGetValue(
参数为(“Ayende”),
out Arg.out(新用户()).Dummy)
.返回(真);
out是编译器的命令。Arg.Out(new User())是 对我们来说很重要的一部分,它指定out参数应该 返回新用户()。Dummy只是指定用户类型的字段, 让编译器高兴


如果使用存储库生成模拟/存根

checkUser = MockRepository.GenerateMock<ICheckUser>
checkUser=MockRepository.GenerateMock
您可以使用out参数设置期望值

checkUser
.Expect(c => c.TryGetValue(Arg.Is("Ayende"), out Arg<User>.Out(new User()).Dummy)
.Return(true) 
checkUser
.Expect(c=>c.TryGetValue(Arg.Is(“Ayende”),out Arg.out(new User()).Dummy)
.Return(true)

此解决方案更干净,适用于Rhino Mocks 3.6:

myStub.Stub(x => x.TryGet("Key", out myValue))
      .OutRef("value for the out param")
      .Return(true);

该链接现在得到一个404未找到。这是唯一对我有效的方法。它不会识别
out Arg.out
语法。+1I还将添加到C#7.0中,您可以使用下划线作为
out
变量的放弃,进一步将其简化为
x.TryGet(“Key”,out)
(这也使您无需在其他地方声明
myValue
)。