簡體   English   中英

FluentValidation和異常消息的集成測試

[英]integration test of FluentValidation and exception message

我使用流利驗證如下:

public class ProjectValidator : AbstractValidator<Project>
{
    public ProjectValidator()
    {
        RuleFor(project => project.Name).NotEmpty().WithMessage("Project name cannot be empty.");
    }
}

在某些服務中:

IValidator<Project> _projectValidator;
_projectValidator.ValidateAndThrow(project);

集成測試的一部分:

var validationException = Assert.Throws<ValidationException>(() => projectRepository.SaveOrUpdate(project));
Assert.That(validationException.Message, Is.EqualTo("Project name cannot be empty."));

這顯然不起作用,因為validationException可能包含許多錯誤。 即使它只包含一個錯誤,字符串看起來像這樣:

驗證失敗: - 項目名稱不能為空。

您如何檢查驗證是否包含指定的驗證消息?:

項目名稱不能為空。

您可以對validationException.Errors集合進行斷言:

Assert.IsNotNull(validationException.Errors.SingleOrDefault(error => error.ErrorMessage.Equals("Project name cannot be empty.")));

或者,您可以使用FluentAssertions執行相同的操作:

validationException.Errors.Should().Contain(error => error.ErrorMessage.Equals("Project name cannot be empty."));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM