Tak*_*ura 4 unit-testing nsuserdefaults swift userdefaults
我有一堂课我想测试。它在其逻辑中使用 UserDefaults。我知道我必须注入一个测试替身来测试它,但我想不费太多力气就可以完成它。
如果可以制作一个仅在单元测试期间有效的临时 UserDefaults 实例,那将是最好的。或者我最终必须编写一个用于模拟的包装器?
是的,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)
}
}
Run Code Online (Sandbox Code Playgroud)
删除持久域有助于避免与以前的一些测试运行中的数据发生冲突。
然后像往常一样使用它:
MockUserDefaults.standard.setValue("Whatever", forKey: "SomeKey")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |