我在单元测试方面有点新手。偶然发现单元测试延迟加载属性的问题,并想知道是否有一个简单的解决方案:
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方法。 我只是想知道是否有任何更简单的方法来避免这种重构 - 似乎只是为了编写一个正确的单元测试用例而过度工程。 你的意见? 谢谢!
答案 0 :(得分:5)
除非您想使用TypeMock Isolator或Moles,否则您必须隐藏接口后面的Load方法并将其注入到类中。没有办法绕过它,但你不仅仅是为了可测试性而这样做。通常,您也倾向于通过这种重构更好地分离关注点。