In meiner App möchte ich feststellen, dass Benachrichtigungen im richtigen Format hinzugefügt wurden. Normalerweise würde ich dies mit Abhängigkeitsinjektionen machen, aber ich kann mir keine Möglichkeit vorstellen, die neue API UNUserNotificationCenter
zu testen.Unit Tests iOS 10 Benachrichtigungen
Ich begann ein Mock-Objekt zu erstellen, die die Benachrichtigungsanforderung erfassen würde:
import Foundation
import UserNotifications
class NotificationCenterMock: UNUserNotificationCenter {
var request: UNNotificationRequest? = nil
override func add(_ request: UNNotificationRequest, withCompletionHandler completionHandler: ((Error?) -> Void)? = nil) {
self.request = request
}
}
jedoch UNUserNotificationCenter
hat keine zugänglich initializers ich das Mock nicht instanziieren.
Ich bin nicht einmal sicher, ob ich testen kann, indem ich die Benachrichtigungsanfrage hinzufüge und die aktuellen Benachrichtigungen abrufe, da die Tests eine Berechtigung für den Simulator erfordern würden, die die Tests blockieren würde. Zurzeit habe ich die Benachrichtigungslogik in einen Wrapper umgestaltet, sodass ich dies zumindest in meiner gesamten Anwendung nachahmen und manuell testen kann.
Habe ich bessere Optionen als manuelle Tests?
Scheint wie eine kluge Lösung, danke! – squarefrog
Dies ist eine großartige Antwort. Denkst du, es ist möglich, einen ähnlichen Ansatz zu verfolgen, um 'func getNotificationSettings (completionHandler: @escaping (UNNotificationSettings) -> Swift.Void)' '? Ich habe Probleme, das zurückgegebene 'UNNotificationSettings'-Objekt zu verspotten, da es nicht instanziiert werden kann. – JimmyB