FluentValidator isInEnum不验证第一个项



我有一个流畅的验证器:

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

雄性和雌性的测试都可以,但对于第一个项目"未指定",它返回错误

Validation Errors:
[0]: 'Gender' must not be empty.

有什么想法吗?

可能是因为NotSpecified枚举被自动赋值为0,fluent验证器检查value == default

请尝试将值类型更改为可为null。

最新更新