验证一个简单的.net集合在应该通过的时候失败了

本文关键字:失败 候失败 集合 一个 简单 net 验证 | 更新日期: 2023-09-27 18:12:29

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

因此:

  • 不能为空
  • 不能为空
使用FluentValidation,我设置了一个规则,然后是一个单元测试。单元测试失败。我以为.NotEmpty()会检查这3个检查(上面)?

谁能解释一下我(关于F.V.)做了哪个假设?我有错吗?

Show me 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没有属性代理id的验证错误FluentValidation.TestHelper.ValidatorTester"2。ValidateNoError (T instanceToValidate)在c: ' '项目FluentValidation ' src ' FluentValidation ' TestHelper ' ValidatorTester.cs:第40行

验证一个简单的.net集合在应该通过的时候失败了

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

_agentValidator.ShouldNotHaveValidationErrorFor(...)

ShouldNotHaveValidationErrorFor保证错误不存在。但是你想要一个错误存在!您想要的函数是ShouldHaveValidationErrorFor