单元测试延迟加载属性的简单方法

时间:2011-04-19 00:38:37

标签: c# unit-testing nunit ioc-container abstraction

我在单元测试方面有点新手。偶然发现单元测试延迟加载属性的问题,并想知道是否有一个简单的解决方案:

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来替换mock方法。 我只是想知道是否有任何更简单的方法来避免这种重构 - 似乎只是为了编写一个正确的单元测试用例而过度工程。 你的意见? 谢谢!

1 个答案:

答案 0 :(得分:5)

除非您想使用TypeMock Isolator或Moles,否则您必须隐藏接口后面的Load方法并将其注入到类中。没有办法绕过它,但你不仅仅是为了可测试性而这样做。通常,您也倾向于通过这种重构更好地分离关注点。