我有一个默认实现的协议
public protocol SettingsIdentifier {
var key: String { get }
var prefix: String { get }
var defaults: DefaultsProtocol { get }
}
和默认实现
public extension SettingsIdentifier where Self: RawRepresentable, Self.RawValue == String {
var key: String { return prefix + rawValue }
var prefix: String { return "" }
var defaults: DefaultsProtocol { return UserDefaults.standard as DefaultsProtocol }
}
目标是在Unittesting中覆盖var默认值并在此处提供模拟。所以对于SomeDefaults来说
enum SomeDefaults: String, SettingsIdentifier {
case preconditionFulfilled
var prefix: String { return "Prefix." }
}
我想提供像
这样的扩展程序extension SomeDefaults {
var defaults: DefaultsProtocol { return UserDefaultsMock }
}
但是当我在与枚举相同的文件中定义覆盖时,才会调用覆盖。
这是否与快速派遣行为有关?