用于单元测试的 UserDefaults 实例?
Posted
技术标签:
【中文标题】用于单元测试的 UserDefaults 实例?【英文标题】:UserDefaults instance for unit testing? 【发布时间】:2020-12-08 00:20:39 【问题描述】:我有一个要测试的课程。它在其逻辑中使用 UserDefaults。 我知道我必须注入一个测试替身来测试它,但我想不费力气就能做到。
如果可以制作一个仅在单元测试期间有效的临时 UserDefaults 实例,那将是最好的。还是我最终必须为模拟编写一个包装器?
【问题讨论】:
UserDefaults(suiteName: )
是我要找的那个吗?
【参考方案1】:
是的,UserDefaults(suiteName: )
就是您要找的。您可以像这样在测试中声明它:
private class MockUserDefaults : UserDefaults
convenience init()
self.init(suiteName: "MockUserDefaults")!
override init?(suiteName suitename: String?)
UserDefaults().removePersistentDomain(forName: suitename!)
super.init(suiteName: suitename)
删除持久域有助于避免之前的一些测试运行中的数据冲突。
然后照常使用:
MockUserDefaults.standard.setValue("Whatever", forKey: "SomeKey")
【讨论】:
以上是关于用于单元测试的 UserDefaults 实例?的主要内容,如果未能解决你的问题,请参考以下文章