ObjectValidator модульное тестирование - PullRequest
1 голос
/ 17 февраля 2010

У меня проблемы с [ObjectValidator]. Итак, у меня есть:

public class UserBO
{
    public int ID
    {
        get;
        set;
    }

    [NotNullValidator(MessageTemplate = "Can't be null!")]
    [RegexValidator(@"[a-z]|[A-Z]|[0-9]*", MessageTemplate = "Must be valid!", Ruleset = "validate_username")]
    [StringLengthValidator(5, RangeBoundaryType.Inclusive, 25, RangeBoundaryType.Inclusive,  Ruleset = "validate_username")]
    public string username
    {
        get;
        set;
    }

и другой класс:

public class PersonBO
{
    public int ID
    {
        get;
        set;
    }

    [NotNullValidator(MessageTemplate="Can't be null!")]
    [ObjectValidator(MessageTemplate = "Must be valid!", Ruleset="validate_obj_user")]
    public UserBO User
    {
        get;
        set;
    }
...

Теперь вы можете сказать мне, почему следующий тест проходит?

[TestMethod()]
public void PersonBOConstructorTest()
    {
        PersonBO target = new PersonBO()
            {
                User = new UserBO
                {
                    ID = 4,
                    username = "asd"
                }
            };
        ValidationResults vr = Validation.Validate<PersonBO>(target, "validate_obj_user");
        Assert.IsTrue(vr.IsValid);
    }

Это не должно быть допустимым, потому что: Атрибут пользователя (типа UserBO) содержит имя пользователя "asd" (3 символа), и я определил для него StringLengthValidator (от 5 до 25 символов). этот объект недействителен Я не могу понять.

Спасибо.

1 Ответ

1 голос
/ 17 февраля 2010

Вы должны указать набор правил в ObjectValidator, если вы хотите, чтобы применялись правила из набора, отличного от набора по умолчанию.

[ObjectValidator("validate_username", MessageTemplate = "Must be valid!", Ruleset = "validate_obj_user")]

Вышеуказанное должно работать в данном конкретном случае. Кроме того, вы можете удалить параметр набора правил из средства проверки длины строки, чтобы оставить его в наборе по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...