Я разрабатываю приложение календаря, в котором пытаюсь создать тесты для функций, использующих календари на пользовательском устройстве. Переменная calendar: EKCalendar
берется из хранилища событий пользователей, поэтому, когда модульные тесты запускаются на эмуляторе XCode, они терпят неудачу, поскольку календаря не существует. Использование моего личного устройства работает, но тогда тесты не пройдут на нашем сервере сборки.
Каковы хорошие подходы к тестированию функции/вычисляемого свойства, использующего календарь/хранилище событий пользователя?
///Return the user's name. If this hasn't been saved extract their name from their Enterprise calendar and save it.
static var name: String? {
if let savedName = defaults.string(forKey: "name") {
return savedName
}
// calendar is a specific EKCalendar members of my company will have.
guard let calendar = MeetingsFetcher().getUserEnterpriseCalendars().first,
let parsedName = calendar.title.firstMatch(from: Regex.organizerNameFromEKCalendar) else {
return nil
}
defaults.set(parsedName, forKey: "name")
return parsedName
}
func getEnterpriseCalendars() -> [EKCalendar]{
guard EKEventStore.authorizationStatus(for: .event) == .authorized else { return [EKCalendar]() }
for calendar in MeetingsFetcher.eventStoreClass.calendars(for: .event) {
if calendar.source.title.range(of: "IBM") != nil{
return [calendar]
}
}
return [EKCalendar]()
}
Не обращайте внимания на то, что он возвращает массив, я не совсем понимаю, почему он это делает: p