Bob*_*y B 7 c# testing lambda unit-testing fluentvalidation
我创建了一个自定义验证器,它测试一个值在枚举的有效值范围内:
public class IsInEnumValidator<T> : PropertyValidator {
public IsInEnumValidator() : base("Property {PropertyName} it not a valid enum value.") { }
protected override bool IsValid(PropertyValidatorContext context) {
if (!typeof(T).IsEnum) return false;
return Enum.IsDefined(typeof(T), context.PropertyValue);
}
}
Run Code Online (Sandbox Code Playgroud)
以及链接验证器的扩展方法:
public static IRuleBuilderOptions<T, TProperty> IsInEnum<T, TProperty>(this IRuleBuilder<T, TProperty> ruleBuilder) {
return ruleBuilder.SetValidator(new IsInEnumValidator<TProperty>());
}
Run Code Online (Sandbox Code Playgroud)
我想使用它像这样:
RuleFor(x => x.Day).IsInEnum<DayOfWeek>();
Run Code Online (Sandbox Code Playgroud)
我的问题:
这不能按预期工作,因为我需要speficy ....IsInEnum<T, DayOfWeek>()而不是所需的....IsInEnum<DayOfWeek>();.我该如何实现这一目标?
我想测试这个自定义验证器 - 不是用这个验证器测试我的数据,而是测试验证器本身.该库的文档解释了如何测试数据,而不是如何测试自定义验证器.库中似乎有很多测试代码,有什么我可以重用的吗?我使用NUnit.