我在下面定义了一个规则,其中 PreferredAirlineCodes 是一个字符串 [] 类型
RuleForEach(x => x.PreferredAirlineCodes).Length(2);
但是当我运行以下测试时...
validator.ShouldHaveValidationErrorFor(x => x.PreferredAirlineCodes, new []{"CX", "3KK"});
测试失败...我是否错误地定义了规则?
您的规则定义良好。
但是 ShouldHaveValidationErrorFor
仅用于测试简单的情况:测试简单的属性验证规则。因此它不支持测试嵌套属性或数组(另请参见 issue)
因此您需要“手动”测试此验证规则:
var validator = new MyClassValidator();
var result = validator.Validate(
new MyClass() { PreferredAirlineCodes = new[] {"CX", "3KK"}});
Assert.IsTrue(
result.Errors.Any(e => e.PropertyName.StartsWith("PreferredAirlineCodes")));
我是一名优秀的程序员,十分优秀!