【发布时间】:2023-03-13 03:52:01
【问题描述】:
我正在为我继承的遗留代码库中的一个类调试一些编写不佳的单元测试。我看到开发人员没有正确测试计算属性。我想了解如何强制我的userEnabledFeature 在 Fake 类中只读。
为什么具有计算属性的类实现协议可以覆盖计算属性并使其可写?
public protocol FeatureManager {
var userEnabledFeature : Bool { get }
}
public class FakeFeatureManagerForTesting: FeatureManager {
public var userEnabledFeature = false //is this legal? Why is compiler not complaining?
public func updateUserEnabledFeature(enabled: Bool){
//this should not be possible - how do I prevent overwriting computed property?
userEnabledFeature = enabled
}
}
ActualFeatureManagerClass {
public var userEnabledFeature: Bool {
if featureManager.cachedFeatures.filter { $0.enabled == true}
{
//do more checks, return true or false
}
return false //default
}
}
【问题讨论】:
-
将
FakeFeatureManagerForTesting中的属性改为:public var userEnabledFeature: Bool { return false }
标签: ios swift unit-testing mocking computed-properties