値が列挙型の有効な値の範囲内にあることをテストするカスタム バリデータを作成しました。
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);
}
}
そして、バリデーターをチェーンするための拡張メソッド:
public static IRuleBuilderOptions<T, TProperty> IsInEnum<T, TProperty>(this IRuleBuilder<T, TProperty> ruleBuilder) {
return ruleBuilder.SetValidator(new IsInEnumValidator<TProperty>());
}
私はこのように使用したい:
RuleFor(x => x.Day).IsInEnum<DayOfWeek>();
私の質問:
....IsInEnum<T, DayOfWeek>()
目的の代わりに特定する必要があるため、これは期待どおりに機能しません....IsInEnum<DayOfWeek>();
。どうすればこれを達成できますか?このカスタムバリデーターをテストしたい - このバリデーターでデータをテストするのではなく、バリデーター自体をテストしたい。ライブラリのドキュメントでは、カスタム バリデータをテストする方法ではなく、データをテストする方法について説明しています。ライブラリには多くのテスト コードがあるようですが、再利用できるものはありますか? NUnitを使用しています。