【问题标题】:Fluent Validation test not working流利的验证测试不起作用
【发布时间】:2014-02-13 13:14:33
【问题描述】:

我有以下课程

public class PasswordValidator : AbstractValidator<PasswordContainer>
    {
        public PasswordValidator()
        {
            SimpleValidations();
        }

        private void SimpleValidations()
        {
            RuleFor(x => x.Password.Length).GreaterThanOrEqualTo(8).WithMessage("Password too short.");
            RuleFor(x => x.Password.Length).LessThanOrEqualTo(255).WithMessage("Password too long.");
        }
}

PasswordContainer 看起来像这样

public class PasswordContainer
    {
        public PasswordContainer()
        {
        }

        public string Password { get; set; }
    }

现在,当我运行它并使用它来验证输入的密码时,它一切都按预期工作。但是,当我创建一个单元测试时它失败了

[Test]
        public void Validate_WhenPasswordTooShort_ShouldReturnError()
        {
            var subject = fixture.Create<PasswordValidator>();
            subject.ShouldHaveValidationErrorFor(b => b.Password, new PasswordContainer() { Password = "pass" });
        }

此测试不起作用。我收到一个错误提示

“预计属性密码的验证错误”

为什么这不起作用?

【问题讨论】:

    标签: c# asp.net-mvc-5 fluentvalidation


    【解决方案1】:

    在设置规则时,您可能应该像在测试中那样指定相同的表达式。 GreaterThanOrEqualTo 可能在数值属性上效果最好。

    试试这个:

    RuleFor(x => x.Password)
    .Length(8, 255)
    .WithMessage("Password should be between 8 and 255 characters.")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多