Я использую Fastlane'ssnapshot
для создания скриншотов для приложения, которое я собираюсь отправить в App Store.Сложность чтения UserDefaults с моментальным снимком Fastlane
Он работает «как рекламируемый» по большей части, но мне не кажется, что я получаю доступ к UserDefaults
в своем приложении. В одном тесте он генерирует Статус выхода: 65 Ошибка.
UI Testing Failure - com.me.MyApp crashed in (extension in MyApp):__ObjC.NSObject.defaultTime() -> Swift.Float
Я нахожу UserDefaults.standard.value(forKey: "defaultTime")
на приглашение для синтаксической ошибки, поэтому я создал расширение для доступа UserDefaults
. Вот что расширение выглядит следующим образом:
class CustomExtensions: NSObject {
/*
This is blank. Nothing else in here. No really...nothing else
*/
}
extension NSObject {
// User Defaults
func defaultTime() -> Float {
return UserDefaults.standard.value(forKey: "defaultTime") as! Float
}
// a bunch of other UserDefaults
}
Wihin приложения, когда мне нужно defaultTime
, я просто введите defaultTime()
. Использование этого метода для доступа к значениям UserDefaults
отлично работает в Simulator и на тестируемых устройствах. Я столкнулся только с проблемой snapshot
.
Я попытался добавить в sleep(1)
внутри теста, но это ничего не делает. Я приветствую предложения re: альтернативные способы доступа к UserDefaults
, которые позволяют мне легко обращаться к ним во всем MyApp.
Awesome! Я просто читал о 'nil coalescing operator 'здесь https://www.hackingwithswift.com/read/12/2/reading-and-writing-basics-userdefaults. Это разрешило эту проблему, теперь я должен настроить мой тест, чтобы щелкнуть правую ячейку ... это должно быть немного проще :) Спасибо! – Adrian
Как в стороне, мои первоначальные значения по умолчанию заданы в 'AppDelegate.swift'. Чтобы ваше решение разрешило мою проблему, мне говорят, что тесты пользовательского интерфейса пропускают приложение AppDelegate. Я никогда бы этого не догадался. Надеюсь, этот комментарий кто-то еще идет по линии. – Adrian