FluentValidation RuleForEach没有检测到错误?

时间:2014-01-18 17:55:03

标签: c# .net validation fluentvalidation

我在下面定义了一个规则,其中PreferredAirlineCodes是一个字符串[]类型

RuleForEach(x => x.PreferredAirlineCodes).Length(2);

然而,当我进行以下测试时...

validator.ShouldHaveValidationErrorFor(x => x.PreferredAirlineCodes, new []{"CX", "3KK"});

测试失败了...我是否错误地定义了规则?

1 个答案:

答案 0 :(得分:2)

你的规则定义得很好。

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")));