Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FluentValidation与异常消息的集成测试_C#_Unit Testing_Nunit_Fluentvalidation - Fatal编程技术网

C# FluentValidation与异常消息的集成测试

C# FluentValidation与异常消息的集成测试,c#,unit-testing,nunit,fluentvalidation,C#,Unit Testing,Nunit,Fluentvalidation,我正在使用fluentvalidation,如下所示: public class ProjectValidator : AbstractValidator<Project> { public ProjectValidator() { RuleFor(project => project.Name).NotEmpty().WithMessage("Project name cannot be empty."); } } 公共类Projec

我正在使用fluentvalidation,如下所示:

public class ProjectValidator : AbstractValidator<Project>
{
    public ProjectValidator()
    {
        RuleFor(project => project.Name).NotEmpty().WithMessage("Project name cannot be empty.");
    }
}
公共类ProjectValidator:AbstractValidator
{
公共项目验证程序()
{
RuleFor(project=>project.Name).NotEmpty().WithMessage(“项目名称不能为空”);
}
}
在某些服务中:

IValidator<Project> _projectValidator;
_projectValidator.ValidateAndThrow(project);
IValidator\u项目验证程序;
_projectValidator.ValidateAndThrow(项目);
集成测试的一部分:

var validationException = Assert.Throws<ValidationException>(() => projectRepository.SaveOrUpdate(project));
Assert.That(validationException.Message, Is.EqualTo("Project name cannot be empty."));
var validationException=Assert.Throws(()=>projectRepository.SaveOrUpdate(project));
Assert.That(validationException.Message,Is.EqualTo(“项目名称不能为空”);
这显然不起作用,因为validationException可能包含许多错误。即使它只包含一个错误,字符串如下所示:

验证失败:--项目名称不能为空

如何检查验证结果/是否包含指定的验证消息

项目名称不能为空


您可以对validationException进行断言。错误集合:

Assert.IsNotNull(validationException.Errors.SingleOrDefault(error => error.ErrorMessage.Equals("Project name cannot be empty.")));
或者,您也可以使用以下方法执行相同操作:


谢谢我一直想使用fluentassertion—您的fluent断言方法工作得很好。谢谢。当然,不客气。我想您可能会喜欢它,并将其与FluentValidation结合使用:)
validationException.Errors.Should().Contain(error => error.ErrorMessage.Equals("Project name cannot be empty."));