【发布时间】:2012-09-03 14:13:15
【问题描述】:
我有一个方法,其中包含对检查字符串输入是否为空或为空的方法的一系列调用。如果为空,则将第二个参数设置为 false;
public bool inputsContainData()
{
bool validInputs = True;
_helper.StringContainsData(_view.FilePath1, validInputs);
_helper.StringContainsData(_view.FilePath2, validInputs);
//...
Return validInputs;
}
StringContainsData() 方法在一个被 DI 注入到演示者中的类中。该方法不返回任何内容,因为结果变量是引用类型。
public void StringContainsData(string input, bool result)
{
if( string.IsNullOrEmpty(input))
{
result = false;
}
}
我对此有一些问题,因为我无法模拟 StringContainsData() 并让它返回特定的结果。我能想到的唯一解决方案是,如果我包含第二个 If 语句,如下所示:
public bool StringContainsData(string input, bool result)
{
if( string.IsNullOrEmpty(input))
{
if(result != false)
{
return false;
}
}
else
{
if(result == false)
{
return false;
}
}
return true;
}
因此阻止我得到 True,False,True => 最终结果 = true 而不是 false。
有更好的方法吗?
【问题讨论】:
-
你的方法没用。外部方法看不到
result内部result的更改,因为该参数不是ref或out参数。 -
在开始模拟之前修复
StringContainsData...另外,为什么要模拟这样一个微不足道的功能? -
再次,请修复您的代码。它甚至不会编译。
-
@leppie,抱歉 id 在没有签入 VS 的情况下将其写入。我已经按照你的要求更新了它。现在应该可以了(摸木头)