Есть ли возможность писать модульные тесты с EKEventStore?

Мы реализуем функциональность «Синхронизация с календарем» в нашем приложении. Наш процесс синхронизации включает события, которые мы получаем с серверной стороны, которые мы хотим скопировать в календарь iPhone. В настоящее время я не уверен, что метод, который мы написали для этой синхронизации, касается всех возможных сценариев, которые мы ожидаем от этого, поэтому я хочу его протестировать. Он содержит многочисленные обращения к EKEventStore, которые, как указано в документации Apple, должны быть вызваны с requestAccessToEntityType:completion: сначала:

На iOS 6 и более поздних версиях вы должны запросить доступ к типу объекта после инициализации хранилища событий requestAccessToEntityType: завершение: для возврата данных.

… которые будут трудно обрабатывать в среде, в которой выполняются наши модульные тесты.

В настоящее время я думаю о реализации поддельного подкласса EKEventStore с некоторыми NSArray объектов EKEvent за ним.

Есть ли возможность выполнить единичный тест с EKEventStore без написания такого макетного подкласса, который бы имитировал все методы, которые мы используем из нашей процедуры синхронизации?

One Solution collect form web for “Есть ли возможность писать модульные тесты с EKEventStore?”

Недавно я обнаружил, что, наконец, это возможно сделать в Simulator с помощью специального взлома: есть TCC.db данных TCC.db где TCC.db это и некоторые другие разрешения доступа.

Мне удалось настроить мой пакет для тестирования модулей, чтобы при запуске эта таблица TCC.db изменена со значением, которое соответствует EKAuthorizationStatusAuthorized . После этого изменения все последующие тесты могут быть записаны с полным доступом к EKEventStore .

Прежде всего немного объяснения здесь: Предоставьте доступ к NAB программно на iOS 7.0 Simulator .

Также есть хороший проект JPSimulatorHacks, который содержит код, завершающий этот взлом. Он поддерживает предоставление разрешений для Календаря.

Теперь я могу выполнить единичный тест кода Calendar Sync без исчерпывающей записи EK-классов.

Важная информация:

Нет доступа к TCC.db по крайней мере, я не нашел его, когда ваш тестовый объект не указывает на реальное приложение в Host Application . Когда я установил Host Application на None мне не удалось найти TCC.db и, следовательно, предоставить что-либо. Вот почему в настоящее время для моей цели модульных тестов я создал искусственное приложение MyAppNameTestsApp, поэтому теперь я установил Host Application целевого объекта для MyAppNameTestsApp . Это дает мне действительное приложение с TCC.db и в то же время не требует загрузки всего приложения при запуске Cmd+U

  • Свойство EKReminder для хранения контактного телефона
  • Разница между EQEvent eventIdentifier и calendarItemExternalIdentifier
  • iOS EKEvent Store, воссоздающий календари iCloud в цикле, не будет сохранять локальные.
  • iOS EventKit - событие не удаляется из календаря
  • Управление универсальным временем (с T) при добавлении события в календарь Xcode
  • Хотите отображать собственное событие / расписание в календаре без отражения в собственном календаре в IOS (iPhone и iPad)
  • UIAlertView требует много времени, чтобы отображаться при вызове в блоке завершения
  • Определите, имеет ли ваше приложение доступ к Календарю без инициирования запроса?
  • EventKit усекает результирующий набор, если для поддержки часового пояса установлено значение, отличное от systemTimeZone
  • iOS Подписка на webcal календари
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.