这是一个测试目标,因此提交它不应该成为一个问题。一旦提交了一次,就不需要再担心它了。
如果您想确保在运行之间保留清洁状态,那么在拆卸时将其设置为nil可能是个好主意。
override func tearDownWithError() throws {
try super.tearDownWithError()
mockDefaults()
}
这里mockDefaults()
调用传递了一个值为nil
的参数,产生了一个包含如下内容的属性列表:
<plist version="1.0">
<dict/>
</plist>
它调用:
private extension FakeInrangeTests {
func mockDefaults(value: Bool? = nil) -> UserDefaults {
MockDefaults.makeInrange(#file, value)
}
}
调用哪个函数:
struct MockDefaults {
static func make(
_ file: String,
value: Any? = nil,
key: String?
) -> UserDefaults {
let userDefaults = UserDefaults(suiteName: file)!
userDefaults.removePersistentDomain(forName: file)
if let value = value, let key = key {
userDefaults.setValue(value, forKey: key)
}
return userDefaults
}
}
extension MockDefaults {
static func makeInrange(
_ file: String,
_ value: Bool?
) -> UserDefaults {
MockDefaults.make(
file,
value: value,
key: UserDefaults.fakeInrangeKey
)
}
}
你可以将它添加到你的 .gitignore 文件中。
*.swift.plist
您可以通过运行以下命令来确认 plist 文件未被删除
var defaults: UserDefaults!
override func setUpWithError() throws {
continueAfterFailure = false
try super.setUpWithError()
defaults = UserDefaults(suiteName: #file)
defaults.setValue(12, forKey: "myKey")
}
override func tearDownWithError() throws {
try super.tearDownWithError()
defaults.removePersistentDomain(forName: #file)
}