我想存根接收 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 中设置一个选项以不必为每个可选参数定义一个值吗?
如果没有设置,是否有更好的方法来处理这种情况(最佳实践、模式等)?
谢谢你。