我有这个规则来验证属性是否具有有效值,具体取决于另一个属性中的允许值列表。
model.RuleFor(c => c)
.Must(c => string.IsNullOrEmpty(c.CurrentValue) || (!string.IsNullOrEmpty(c.CurrentValue) && c.AllowedValues.Contains(c.CurrentValue)))
工作正常,但我想创建一个单元测试,但总是失败。我认为是因为RuleFor不是特定属性而是对象本身。
this.validator.ShouldNotHaveValidationErrorFor(c => c.CurrentValue, this.model);
如何改进验证器或测试?
答案 0 :(得分:0)
您可以使用Custom
验证,以便将验证失败与特定属性联系起来:
model.RuleFor(c => c.CurrentValue).NotEmpty();
model.When(c => !string.IsNullOrEmpty(c.CurrentValue), () => Custom(CurrentValueIsAllowed));
private ValidationFailure CurrentValueIsAllowed(YourModelType c)
{
if(c.AllowedValues.Contains(c.CurrentValue))
{
return null;
}
return new ValidationFailure("CurrentValue", "Value is not allowed.");
}