Самостоятельная проверка - PullRequest
0 голосов
/ 13 февраля 2010

У меня есть класс MyBO, который содержит:

...
[RangeValidator(typeof(byte), "0", RangeBoundaryType.Inclusive, "20", RangeBoundaryType.Inclusive, Ruleset="validate_x")]
    public byte x
    {
        get;
        set;
    }

    [IgnoreNulls]
    [RangeValidator(typeof(byte), "0", RangeBoundaryType.Inclusive, "50", RangeBoundaryType.Inclusive, Ruleset = "validate_y")]
    public byte y
    {
        get;
        set;
    }

    [SelfValidation(Ruleset="validate_xy")]
    public void VerifyXY(ValidationResults results)
    {
        if (x < y)
        {
            results.AddResult(new ValidationResult("X cannot be < than Y!", this, "Verify", null, null));
        }
    }

Проблема в том, что если в тестовом классе у меня есть:

    [TestMethod()]
    public void MyBOConstructorTest()
    {
        MyBO target = new MyBO() { x = 20, y = 23 };
        ValidationResults vr = Validation.Validate(target, "validate_xy");
        Assert.IsTrue(vr.IsValid);
    }

тест не проходит. Зачем? Потому что X 20, а Y 23. Итак, как вы можете видеть, я использую SelfValidation в классе BO.

Thanls

1 Ответ

2 голосов
/ 14 февраля 2010

Самое логичное объяснение, которое я могу придумать, это то, что вы не украшали свой класс MyBO атрибутом [HasSelfValidation]. Без этого атрибута метод VerifyXY вызываться не будет:

[HasSelfValidation]
public class MyBO
{
    // implementation
}

Надеюсь, это поможет.

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