验证简单的.NET集合应该通过时失败

时间:2014-07-10 23:13:04

标签: c# .net validation fluentvalidation

我正在尝试创建一个FluentValidation规则来测试我的IList<string>必须包含一个或多个项目。

因此:

  • 不能为空
  • 它不能为空
  • 计数&gt; 0

使用FluentValidation,我设置了规则然后进行单元测试。单元测试失败。 我以为.NotEmpty()会查看这3张支票(上图)?

有人可以解释一下我做出的假设(关于F.V.)我错了吗?

告诉我da codez

public class AgentValidator : AbstractValidator<Agent>
{
    public AgentValidator()
    {
        RuleFor(agent => agent.Name).NotEmpty()
            .WithMessage("A name is required. eg. Jane Smith.");

        RuleFor(agent => agent.AgencyIds).NotEmpty()
            .WithMessage("At least one AgencyId is requires where this Agent works at.");
    }
}

和测试。

[Fact]
public void GivenNoAgencyIds_Validate_ShouldHaveAnError()
{
    // Arrange.
    var agencyIds = new string[]{}; // No Agency Id's.

    // Act & Assert.
    _agentValidator.ShouldNotHaveValidationErrorFor(agent => agent.AgencyIds, agencyIds);
}

最后,错误消息

  

FluentValidation.TestHelper.ValidationTestExceptionExpected no   属性AgencyIds的验证错误   FluentValidation.TestHelper.ValidatorTester`2.ValidateNoError(T instanceToValidate)   在   C:\项目\ FluentValidation的\ src \ FluentValidation \ TestHelper \ ValidatorTester.cs:   第40行

1 个答案:

答案 0 :(得分:1)

我认为您使用了错误的测试方法:

_agentValidator.ShouldNotHaveValidationErrorFor(...)

ShouldNotHaveValidationErrorFor可确保错误不存在。但是你想要存在错误!您想要的功能是ShouldHaveValidationErrorFor