Модульные тесты UNUserNotificationCenter

Я пытаюсь протестировать простой метод, который должен создавать и доставлять уведомления для iOS 10.

func displayPlaceNotificationContent() {
    let unMutableNotificationContent = generateNotification()
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
    let request = UNNotificationRequest(identifier: getNotificationIdentifier(), content: unMutableNotificationContent, trigger: trigger)
    let notificationCenter = UNUserNotificationCenter.current()
    notificationCenter.add(request, withCompletionHandler: nil)
}  

А вот модульный тест этого метода:

func testDisplayNotification() {
    notificationManager?.displayPlaceNotificationContent())
    XCTAssertTrue((notificationManager.isNotificationDisplayed())
}

Когда я пытаюсь выполнить свой модульный тест, у меня есть исключение, трассировка стека:

2017-09-12 13:52:25.931564+0200 xctest[17170:1252988] *** Assertion failure in -[UNUserNotificationCenter initWithBundleProxy:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UserNotifications_Sim/UserNotifications-156/UNUserNotificationCenter.m:50
2017-09-12 13:52:25.933629+0200 xctest[17170:1252988] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: bundleProxy != nil'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010b0a9aeb __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000010aa0cf41 objc_exception_throw + 48
    2   CoreFoundation                      0x000000010b0aebb2 +[NSException raise:format:arguments:] + 98
    3   Foundation                          0x000000010a381d06 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
    4   UserNotifications                   0x000000010bff8c99 -[UNUserNotificationCenter initWithBundleProxy:] + 297
    5   UserNotifications                   0x000000010bff8a6f __53+[UNUserNotificationCenter currentNotificationCenter]_block_invoke + 81
    6   libdispatch.dylib                   0x0000000111a39475 _dispatch_client_callout + 8
    7   libdispatch.dylib                   0x0000000111a3a909 dispatch_once_f + 55
    8   UserNotifications                   0x000000010bff8a1b +[UNUserNotificationCenter currentNotificationCenter] + 45
...

Ответственной линией за этот сбой должен быть доступ к UNUserNotificationCenter благодаря методу current(). Я не понимаю, почему? UNUserNotificationCenter должен быть одноэлементным, могу ли я использовать его в контексте модульного теста? Я должен издеваться над этим?


person zed13    schedule 12.09.2017    source источник
comment
Есть идеи, что это было?   -  person strangetimes    schedule 06.10.2017
comment
У меня есть эта проблема, но не в модульном тесте. Вы нашли исправление?   -  person Darren    schedule 11.08.2018
comment
Может быть, ваше устройство/симулятор iOS не имеет разрешения на отправку уведомлений?   -  person patrickS    schedule 22.10.2019
comment
Отвечает ли это на ваш вопрос? Сбой iOS 11 с bundleProxy! = nil ошибка при использовании UNUserNotificationCenter   -  person Victor Sigler    schedule 15.11.2019