用 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()

但我不能,因为 nullstring 是两种不同的类型。

我想你可以使用基本的 ||:

if ( FiscalCode == null || FiscalCodeIsCorrect(FiscalCode) )
{
   //something
}

|| 是逻辑或运算符。如果至少一个操作数的计算结果为 true,则计算结果为 true。另外,请注意它会短路,这意味着如果 FiscalCodenull 它根本不会调用 FiscalCodeIsCorrect

@Martin Zikmund 的建议也是正确的,但在您的情况下 NullFiscalCodeIsCorrect 都应该没问题。所以把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();