cs0*_*815 4 c# nunit unit-testing fluentvalidation
我正在使用流畅的验证如下:
public class ProjectValidator : AbstractValidator<Project>
{
public ProjectValidator()
{
RuleFor(project => project.Name).NotEmpty().WithMessage("Project name cannot be empty.");
}
}
Run Code Online (Sandbox Code Playgroud)
在某些服务中:
IValidator<Project> _projectValidator;
_projectValidator.ValidateAndThrow(project);
Run Code Online (Sandbox Code Playgroud)
集成测试的一部分:
var validationException = Assert.Throws<ValidationException>(() => projectRepository.SaveOrUpdate(project));
Assert.That(validationException.Message, Is.EqualTo("Project name cannot be empty."));
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,因为validationException 可能包含许多错误。即使它只包含一个错误,字符串也如下所示:
验证失败:-- 项目名称不能为空。
您将如何检查验证结果/包含指定的验证消息?:
项目名称不能为空。
您可以对 validationException.Errors 集合进行断言:
Assert.IsNotNull(validationException.Errors.SingleOrDefault(error => error.ErrorMessage.Equals("Project name cannot be empty.")));
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用FluentAssertions执行相同操作:
validationException.Errors.Should().Contain(error => error.ErrorMessage.Equals("Project name cannot be empty."));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |