2017-12-07 15 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 
} 
関連する問題