我有一个流畅的验证器:
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。