c# – RhinoMock中带有存根的可选参数

c# – RhinoMock中带有存根的可选参数,第1张

概述我想存根一个接收2个布尔参数的函数.第一个是必需的,第二个是可选的.如果我尝试将Arg.Is.Anything发送到第一个但没有第二个信息,我收到一个错误: System.InvalidOperationException:使用Arg时,必须使用Arg.Is,Arg.Text,Arg.List,Arg.Ref或Arg.Out定义所有参数.预期有2个参数,1个已被定义. 这是我的类到存根的示例: p 我想存根一个接收2个布尔参数的函数.第一个是必需的,第二个是可选的.如果我尝试将Arg.Is.Anything发送到第一个但没有第二个信息,我收到一个错误:

system.invalIDOperationException:使用Arg时,必须使用Arg.Is,Arg.Text,Arg.List,Arg.Ref或Arg.Out定义所有参数.预期有2个参数,1个已被定义.

这是我的类到存根的示例:

public interface IOptionalParameterTester   {      bool IsValID(bool mustCheck,bool checkInDatabase = true);   }   public class OptionalParameterTester : IOptionalParameterTester   {      public bool IsValID(bool mustCheck,bool checkInDatabase = true)      {         if (checkInDatabase)            return true;         else            return false;      }    }

以下是测试样本:

[Test]  public voID ValIDateProducertest()  {     IOptionalParameterTester optionalParameter = MockRepository.GenerateStub<IOptionalParameterTester>();     optionalParameter.Stub(x => x.IsValID(Arg<bool>.Is.Anything)).Return(true);  }

在这种情况下,如果我希望测试无错误地传递,我必须为第一个(Arg.Is.Anything)或特定的布尔值(如true或false)定义相同的信息.

如果我为第一个参数设置了除Arg.Is.Anything之外的任何内容,我没有任何错误.

这是一个错误吗?

我可以在RhinoMock中设置一个选项,而不必为每个可选参数定义一个值吗?

如果没有设置,是否有更好的办法来处理这种情况(最佳实践,模式等)?

谢谢.

解决方法 我想我明白你要做什么但是,因为看起来这是Rhino Mocks的限制(我们可以从你收到的错误信息中得出结论)我建议改变你的测试策略.

尝试执行以下 *** 作:

[Test]  public voID ValIDateProducertest()  {     bool anyBooleanValue = true;     IOptionalParameterTester optionalParameter = MockRepository.GenerateStub<IOptionalParameterTester>();     optionalParameter.Stub(x => x.IsValID(anyBooleanValue)).Return(true);  }

我知道在你的测试中你希望Rhino Mocks忽略第一个参数并且它需要可选的第二个参数,但是,根据你要测试的逻辑,只需硬编码第一个参数,Rhino Mocks不应该抱怨.

只要在您的测试中明确指出第一个参数的值不相关,您的测试就是有效且可读的.

总结

以上是内存溢出为你收集整理的c# – RhinoMock中带有存根的可选参数全部内容,希望文章能够帮你解决c# – RhinoMock中带有存根的可选参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1228785.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存