2017-12-07 2 views
3

Ich habe folgende Dto mit einigen Attributen, um die Eigenschaften zu validieren. Wenn ich einige ungültige Werte von Eigenschaften übergebe, erlaubt mein Komponententest diese Werte ohne Validierung gemäß der gegebenen Bedingung von Attributen. Ich mache das erste Mal, also habe ich keine Ideen, um es zu erreichen.C# Unit Test zum Testen der Eigenschaften von 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

Wo ist Ihr Unit-Test-Code? – LordWilmore

+0

LordWilmore Hallo, ich mache den Unit Test mit Spott. Ich habe verschiedene Arten von Methoden getestet, aber keine Eigenschaften. Ich habe also keinen Code, da ich nicht weiß, woher ich anfangen soll. – Dipak

+0

@DipakAkhade In welchem ​​Framework wird dieser Code verwendet? Höchstwahrscheinlich müssen Sie die in diesem Framework verfügbare Validierungs-API verwenden. – Nkosi

Antwort

2

Sie können Validator-Klasse verwenden, um Ihre dto zu überprüfen:

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); 

oder ohne Ausnahme wie folgt aus:

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