用 shouldly 测试两个条件
Test two conditions with shouldly
我在 class
中有一个 属性
public class User {
public string FiscalCode {get; set;}
}
我想用两个条件测试 属性 财务代码。
如果 fiscalcode 为 null 或 fiscalcode 通过方法验证,则测试正常
public bool FiscalCodeIsCorrect(string fiscalcode)
{
....
}
如果两个条件之一得到验证,我如何在单行中进行测试?
我想在测试项目中使用这个条件,所以代码行可以是
user.FiscalCode.ShouldBeOneOf()
但我不能,因为 null
和 string
是两种不同的类型。
我想你可以使用基本的 ||
:
if ( FiscalCode == null || FiscalCodeIsCorrect(FiscalCode) )
{
//something
}
||
是逻辑或运算符。如果至少一个操作数的计算结果为 true
,则计算结果为 true
。另外,请注意它会短路,这意味着如果 FiscalCode
是 null
它根本不会调用 FiscalCodeIsCorrect
。
@Martin Zikmund 的建议也是正确的,但在您的情况下 Null
和 FiscalCodeIsCorrect
都应该没问题。所以把null
的校验逻辑放在FiscalCodeIsCorrect
中应该是更好的解决方案,这样就不用每次都校验if null了。
所以这就是我的意思
public bool FiscalCodeIsCorrect(string fiscalcode)
{
if (fiscalcode == null)
return true;
//....You code here
}
现在你只需要chack
if (FiscalCodeIsCorrect(FiscalCode) )
{
//something
}
ShouldBeOneOf
不能处理函数,所以我认为简单的方法是使用 ShouldBeTrue
(FiscalCode == null || FiscalClodeIsCorrect(FiscalCode)).ShouldBeTrue();
我在 class
中有一个 属性public class User {
public string FiscalCode {get; set;}
}
我想用两个条件测试 属性 财务代码。 如果 fiscalcode 为 null 或 fiscalcode 通过方法验证,则测试正常
public bool FiscalCodeIsCorrect(string fiscalcode)
{
....
}
如果两个条件之一得到验证,我如何在单行中进行测试?
我想在测试项目中使用这个条件,所以代码行可以是
user.FiscalCode.ShouldBeOneOf()
但我不能,因为 null
和 string
是两种不同的类型。
我想你可以使用基本的 ||
:
if ( FiscalCode == null || FiscalCodeIsCorrect(FiscalCode) )
{
//something
}
||
是逻辑或运算符。如果至少一个操作数的计算结果为 true
,则计算结果为 true
。另外,请注意它会短路,这意味着如果 FiscalCode
是 null
它根本不会调用 FiscalCodeIsCorrect
。
@Martin Zikmund 的建议也是正确的,但在您的情况下 Null
和 FiscalCodeIsCorrect
都应该没问题。所以把null
的校验逻辑放在FiscalCodeIsCorrect
中应该是更好的解决方案,这样就不用每次都校验if null了。
所以这就是我的意思
public bool FiscalCodeIsCorrect(string fiscalcode)
{
if (fiscalcode == null)
return true;
//....You code here
}
现在你只需要chack
if (FiscalCodeIsCorrect(FiscalCode) )
{
//something
}
ShouldBeOneOf
不能处理函数,所以我认为简单的方法是使用 ShouldBeTrue
(FiscalCode == null || FiscalClodeIsCorrect(FiscalCode)).ShouldBeTrue();