我努力做好并为我的课程编写单元测试,但我有一些课程处理首选项并检查首次运行。我写的测试函数在他们第一次运行时工作正常,但随后的测试失败,因为首选项已经有了值。将对象设置为nil
会导致Optional<Any>
值在使用nil
获取时不等于UserDefaults.standard.object(forKey:)
。
我还尝试了UserDefaults.standard.removeObject(forKey:)
和UserDefaults.standard.synchronize()
以及UserDefaults.resetStandardUserDefaults()
。似乎没有任何效果,Bundle.main.bundleIdentifier
值为nil
,这意味着我也无法使用UserDefaults.standard.removePersistentDomain(forName:)
!
我发现偏好设置已保存在:/Users/<name>/Library/Developer/CoreSimulator/Devices/<UUID>/data/Library/Preferences/xctest.plist
中,并且我已尝试使用"xctest"
中的字符串removePersistentDomain
,但这也无效。
我可以将值设置为其他值并检查,但我真的很讨厌将我的代码丢失以测试XCTest中只存在的情况(我已经有了一个函数)因为XCTest案例中的UserDefaults
与代码中的UserDefaults
不同,所以专门用于执行此重置!)因此,我怎样才能重置XCTestCase中的标准UserDefaults
?