FluentValidation.TestHelper 名前空間の拡張メソッド .ShouldHaveChildValidator() には、モデルを取るオーバーロードがありません。次に、次の例のように When() 句を使用するときに、子バリデータが正しく設定されていることをテストするにはどうすればよいですか?
例えば
public class ParentModel
{
public bool SomeCheckbox { get; set; }
public ChildModel SomeProperty { get; set; }
}
public class ParentModelValidator : AbstractValidator<ParentModel>
{
RuleFor(m => m.SomeProperty)
.SetValidator(new ChildModelValidator())
.When(m => m.SomeCheckbox);
}
SomeCheckbox が true の場合、子バリデーターが存在し、SomeCheckbox が false の場合、子バリデーターが存在しないことをアサートしたいと思います。
これまでのところ、単体テストで次のことを行っています。
ParentModelValidator validator = new ParentModelValidator();
validator.ShouldHaveChildValidator(
m => m.SomeProperty,
typeof(ChildModelValidator));
しかし、それは .When() 条件を考慮していません。
.ShouldHaveValidationErrorFor() などの FluentValidation.TestHelper 名前空間の他のメソッドには、モデルを受け取るオーバーロードがあることに気付きました。そのため、前提条件を満たすモデルを設定することで、When() 句を使用して単純なプロパティ タイプを簡単にテストできます。
何か案は?