我正在尝试创建一个FluentValidation规则来测试我的IList<string>
必须包含一个或多个项目。
因此:
使用FluentValidation,我设置了规则然后进行单元测试。单元测试失败。
我以为.NotEmpty()
会查看这3张支票(上图)?
有人可以解释一下我做出的假设(关于F.V.)我错了吗?
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行
答案 0 :(得分:1)
我认为您使用了错误的测试方法:
_agentValidator.ShouldNotHaveValidationErrorFor(...)
ShouldNotHaveValidationErrorFor
可确保错误不存在。但是你想要存在错误!您想要的功能是ShouldHaveValidationErrorFor
。