FluentValidation isInEnum 不验证第一项
FluentValidator isInEnum Not validate for first item
我有一个流利的验证器:
public MyValidator()
{
RuleFor(t => t.Gender)
.IsInEnum()
.NotEmpty();
//...
}
性别是枚举类型
public enum Gender
{
NotSpecified,
Male,
Female,
}
所有枚举值的测试方法
[Theory]
[InlineData(Gender.NotSpecified)]
[InlineData(Gender.Female)]
[InlineData(Gender.Male)]
public void WhenGenderIsInEnum_ShouldValidate(Gender gender)
{
// Arrange
var model = new MyObject {Gender = gender};
// Act
var result = _validator.TestValidate(model);
// Assert
result
.ShouldNotHaveValidationErrorFor(s => s.Gender);
}
男性和女性的测试都可以,但是对于第一个项目 'NotSpecified' 它 return 一个错误
Validation Errors:
[0]: 'Gender' must not be empty.
有什么想法吗?
可能是因为 NotSpecified 枚举被自动分配值 0 并且流畅的验证器检查 value == default
尝试将值类型更改为可为空。
我有一个流利的验证器:
public MyValidator()
{
RuleFor(t => t.Gender)
.IsInEnum()
.NotEmpty();
//...
}
性别是枚举类型
public enum Gender
{
NotSpecified,
Male,
Female,
}
所有枚举值的测试方法
[Theory]
[InlineData(Gender.NotSpecified)]
[InlineData(Gender.Female)]
[InlineData(Gender.Male)]
public void WhenGenderIsInEnum_ShouldValidate(Gender gender)
{
// Arrange
var model = new MyObject {Gender = gender};
// Act
var result = _validator.TestValidate(model);
// Assert
result
.ShouldNotHaveValidationErrorFor(s => s.Gender);
}
男性和女性的测试都可以,但是对于第一个项目 'NotSpecified' 它 return 一个错误
Validation Errors:
[0]: 'Gender' must not be empty.
有什么想法吗?
可能是因为 NotSpecified 枚举被自动分配值 0 并且流畅的验证器检查 value == default
尝试将值类型更改为可为空。