2013-07-23 1 views
4

다음과 같이 내가 fluentvalidation을 사용하고 있습니다 : 분명히통합 FluentValidation의 테스트 및 예외 메시지

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

이 :

통합 테스트의
IValidator<Project> _projectValidator; 
_projectValidator.ValidateAndThrow(project); 

부분 : 일부 서비스

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

validationException으로 작동하지 않습니다. 잠재적으로 많은 오류가 있습니다. 오류가 하나만 포함 된 경우에도 문자열은 다음과 같습니다.

유효성 검사가 실패했습니다. - 프로젝트 이름은 비워 둘 수 없습니다.

어떻게는 유효성 검증/결과 지정된 검증 메시지?

프로젝트 이름은 비워 둘 수 없습니다 포함되어 있는지 확인합니다. 당신이 FluentAssertions를 사용하여 동일한 작업을 수행 할 수 있습니다,

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

을 또는 :

답변

3

당신은 validationException.Errors 수집에 대한 주장을 할 수

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

감사합니다. 나는 항상 fluentassertion을 사용하고자했다. 유창한 주장 방법이 잘 작동한다. 감사. – cs0815

+0

물론 이죠, 오신 것을 환영합니다. 나는 당신이 그것을 좋아하고 FluentValidation과 함께 사용한다고 생각했다. :) –