2010-02-15 8 views
0

J'utilise Microsoft Enterprise Validation. Mais dans ce cas, le test passe, même si j'attribue une valeur nulle à cet attribut. Pourquoi?Pourquoi NotNullValidator ne fonctionne pas?

[NotNullValidator(MessageTemplate = "Cannot be null!", Ruleset="validate_x")] 
[StringLengthValidator(10, RangeBoundaryType.Inclusive, 40, RangeBoundaryType.Inclusive, Ruleset="validate_x")] 
[RegexValidator(@"^[A-Z][a-z]*\s[A-Z][a-z]*$", MessageTemplate = "Not valid!", Ruleset="validate_x")] 
public string x 
{ 
    get; 
    set; 
} 

Et dans une classe de test:

[TestMethod()] 
public void xTest() 
{ 
    MyBO target = new MyBO() { x = null }; 
    ValidationResults vr = Validation.Validate<MyBO>(target, "validate_x"); 
    Assert.IsTrue(vr.IsValid); 
} 

alors je suis que cela est valable, mais il ne devrait pas être. (x est nul!) Des idées?

Merci

Répondre

1

Lorsque vous copiez le code que vous avez fourni à une simple application de la console, je vois la propriété IsValid de l'objet ValidationResults deviennent False. Je pense que vous faites quelque chose de mal quelque part, mais il est impossible de le voir en regardant votre code. Voici le code que j'ai utilisé:

public class MyBO 
{ 
    [NotNullValidator(MessageTemplate = "Cannot be null!", 
     Ruleset = "validate_x")] 
    [StringLengthValidator(10, RangeBoundaryType.Inclusive, 40, 
     RangeBoundaryType.Inclusive, Ruleset = "validate_x")] 
    [RegexValidator(@"^[A-Z][a-z]*\s[A-Z][a-z]*$", 
     MessageTemplate = "Not valid!", Ruleset = "validate_x")] 
    public string x { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     MyBO target = new MyBO() { x = null }; 
     ValidationResults vr = Validation.Validate<MyBO>(target, "validate_x"); 
     Console.WriteLine(vr.IsValid); 
    } 
} 
Questions connexes