#swift #unit-testing #nsuserdefaults #userdefaults
#swift #модульное тестирование #nsuserdefaults #пользовательские ошибки
Вопрос:
У меня есть класс, который я хочу протестировать. Он использует UserDefaults в своей логике. Я знаю, что мне нужно ввести тестовый дубль, чтобы протестировать его, но я хочу сделать это без особых усилий.
Если возможно создать временный экземпляр UserDefaults, который действителен только во время модульного тестирования, это будет лучше всего. Или мне нужно в конечном итоге написать оболочку для издевательства?
Комментарии:
1.
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")