gpt4 book ai didi

c# - 对延迟加载属性进行单元测试的简单方法

转载 作者:太空狗 更新时间:2023-10-29 21:41:42 29 4
gpt4 key购买 nike

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

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

最佳答案

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

关于c# - 对延迟加载属性进行单元测试的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5710357/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com