Я пишу юнит-тесты для приложения, которое может отправлять своим пользователям локальные уведомления.Я использую UNNotificationCenter
для обработки доставки каждого уведомления.Мои тесты написаны с использованием expectations
.
Один из моих модульных тестов выглядит следующим образом:
func testNotificationDelivery() {
// setup expectation for asynchronous block of code
let expectation = self.expectation(description: "notification delivery")
var deliveredNotifications: [UNNotification]?
// create a notification that is set to trigger in 1 second
let mockNotification = LocalNotification(withID: "notificationID",
body: "notificationBody",
toTriggerInSeconds: 1)
mockLocalNotificationManager.schedule(notifications: mockNotification)
UNUserNotificationCenter.current().getDeliveredNotifications {
deliveredNotifications = $0
expectation.fulfill()
}
waitForExpectations(timeout: 2, handler: nil)
XCTAssertEqual(deliveredNotifications?.count, 1, "Notification delivered successfully")
}
... и не проходит, потому что deliveredNotifications?.count
это 0
вместо 1
.Существует большая вероятность того, что уведомление не было доставлено, поскольку я не обрабатываю разрешения уведомлений явно в модульном тесте.Как мне это сделать?