Простой способ модульного тестирования свойства отложенной загрузки - PullRequest
6 голосов
/ 19 апреля 2011

Я новичок в юнит-тестировании. Наткнулся на проблему модульного тестирования свойства ленивой нагрузки и подумал, есть ли простое решение для этого:

private SubscriptionType _subscriptionType;
public SubscriptionType SubscriptionType
{
    get
    {
        if (_subscriptionType == null ||_subscriptionType.SubscriptionTypeId != this.SubscriptionTypeId)
        {
            if (this.SubscriptionTypeId !=0)
                _subscriptionType = SubscriptionType.Load(this.SubscriptionTypeId);
        }

        return _subscriptionType;
    }
}

Мне нужно проверить логику в свойстве (операторы if), а не в реальной функциональности загрузки SubscriptionType - кажется, что наиболее очевидный подход здесь, вероятно, состоит в том, чтобы абстрагировать SubscriptionType.Load и использовать какой-либо тип IoC для замены методом макета , Мне просто интересно, есть ли какие-нибудь более простые способы избежать такого рода рефакторинга - это похоже на некоторый переобучение только для написания правильного примера модульного теста. Твои мысли? Спасибо!

1 Ответ

5 голосов
/ 19 апреля 2011

Если вы не хотите использовать TypeMock Isolator или Moles, вам придется скрыть метод Load за интерфейсом и внедрить его в класс.Обойти это невозможно, но вы будете делать это не только ради тестируемости.Обычно вы также склонны лучше отделять интересы от такого рефакторинга.

...