我编写了一个小型的 ValidationRules 库,并希望确保它通过了大量的综合测试。我想对它们进行单元测试,但我不太确定如何对验证规则进行单元测试。我认为这与测试任何其他方法类似,但有一些事情我不确定。
例如,我的一些验证规则具有用于通过 XAML 传递参数的属性。我不想想出一个办法来做到这一点,因为很多人会添加验证器并基于我的单元测试套件进行构建。
<utils:RestrictInputTypeValidator Restriction="IntegersOnly" ValidatesOnTargetUpdated="True"/>
在此示例中,“Restriction”是验证规则“RestrictInputTypeValidator”的属性。
我还没有找到任何关于单元测试验证的好的资源,并且很想看看一些最佳实践的示例。
最佳答案
您在 XAML 中使用的每个验证都派生自 ValidationRule
类,该类具有以下 Validate
重载:
ValidationResult Validate(object value, CultureInfo cultureInfo)
您只需在单元测试中调用此方法并检查返回的 ValidationResult
对象,该对象包含一个 IsValid
属性,用于指示传递的值是否有效。
由于这是一个与其他类一样的类,因此您可以像平常一样在单元测试中传递所需的属性:
var validator = new RestrictInputTypeValidator()
validator.Restriction = MyRestrictionEnum.IntegersOnly;
// Here for example our input is invalid.
var result = validator.Validate("My Input", MyCulture);
Assert.IsFalse(result.IsValid);
关于c# - 单元测试验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17731953/