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 为真,则子验证器存在,如果 SomeCheckbox 为假,则子验证器不存在。
到目前为止,我在单元测试中有以下内容:
ParentModelValidator validator = new ParentModelValidator();
validator.ShouldHaveChildValidator(
m => m.SomeProperty,
typeof(ChildModelValidator));
但这没有考虑 .When() 条件。
我注意到 FluentValidation.TestHelper 命名空间中的其他方法,例如 .ShouldHaveValidationErrorFor() 具有采用模型的重载,因此通过设置满足先决条件的模型,很容易使用 When() 子句测试简单的属性类型。
有任何想法吗?