2017-12-07 12 views
3

속성을 검증하기 위해 다음 속성이있는 Dto가 있습니다. 부적합한 속성 값을 전달할 때 단위 테스트는 주어진 속성 조건에 따라 유효성을 검사하지 않고 해당 값을 허용합니다. 나는 그것을하기 위해 제로 아이디어가 있기 때문에 이것을 처음하고 있습니다.C# Dto 속성의 속성을 테스트하기위한 단위 테스트

public class UserDto : IModelWithId 
{ 
    public int Id { get; set; } 
    [MinLength(1, ErrorMessageResourceName = "Error_User_UsernameMinLength", ErrorMessageResourceType = typeof(Properties.Resources))] 
    [MaxLength(255, ErrorMessageResourceName = "Error_User_UsernameMaxLength", ErrorMessageResourceType = typeof(Properties.Resources))] 
    [RegularExpression(@"^[A-Za-z0-9äöüÄÖÜß]+(?:[._-][A-Za-z0-9äöüÄÖÜß]+)*$", ErrorMessageResourceName = "Error_User_UsernameFormat", ErrorMessageResourceType = typeof(Properties.Resources))] 
    public string UserName { get; set; }   

    [MinLength(1, ErrorMessageResourceName = "Error_User_NameMinLength", ErrorMessageResourceType = typeof(Properties.Resources))] 
    [MaxLength(255, ErrorMessageResourceName = "Error_User_NameMaxLength", ErrorMessageResourceType = typeof(Properties.Resources))] 
    public string Name { get; set; } 

    [MinLength(1, ErrorMessageResourceName = "Error_User_EmailMinLength", ErrorMessageResourceType = typeof(Properties.Resources))] 
    [MaxLength(255, ErrorMessageResourceName = "Error_User_EmailMaxLength", ErrorMessageResourceType = typeof(Properties.Resources))] 
    [EmailAddress(ErrorMessageResourceName = "Error_User_EmailAddress", ErrorMessageResourceType = typeof(Properties.Resources))] 
    public string Email { get; set; } 
} 
+1

어디 단위 테스트 코드는? – LordWilmore

+0

LordWilmore 안녕하세요, 저는 조롱을 사용하여 단위 테스트를하고 있습니다. 다양한 메소드를 테스트했지만 속성은 테스트하지 않았습니다. 따라서 모름지에는 코드가 없으며 어디에서 시작해야할까요? – Dipak

+0

@DipakAkhade이 코드가 사용되는 프레임 워크는 무엇입니까? 대부분의 경우 해당 프레임 워크에서 유효성 검증 API를 사용할 필요가 있습니다. – Nkosi

답변

2

당신은 당신의 DTO를 검증하기 위해 검증 클래스를 사용할 수 있습니다 :

var dto = new UserDto(); 
dto.Email = "not an email"; 
var ctx = new System.ComponentModel.DataAnnotations.ValidationContext(dto); 
// will throw an exception if invalid 
System.ComponentModel.DataAnnotations.Validator.ValidateObject(dto, ctx, true); 

또는 같은 예외없이

:

var result = new List<ValidationResult>(); 
if (!Validator.TryValidateObject(dto, ctx, result)) { 
    // inspect `result` list for specific validation errors 
}