私は最終日かそこらのローカル通知をユニットテストする方法を見つけようとしました。ユニットテストのローカル通知
私は基本的に7.3
をスウィフト2.2を使用してXcodeのよ、私は私のAppDelegate
でUIApplication.sharedApplication().presentLocalNotificationNow
を経由してトリガされUILocalNotification
を生成ストリップダウンAPIを、持っている私が示すことapplication:didReceiveLocalNotification
メソッドを実装していますこれを手動で実行する場合
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
if application.applicationState == .Active {
var topController : UIViewController = (application.keyWindow?.rootViewController)!
while ((topController.presentedViewController) != nil) {
topController = topController.presentedViewController!
}
let alert = UIAlertController(title: notification.alertTitle, message: notification.alertBody, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: {(action: UIAlertAction!) in}))
topController.presentViewController(alert, animated: true, completion: nil)
}
}
を次のようにUIAlertController
、これは正常に動作します。生成されたメッセージとアラートが表示されます。
私がしたいことは、この機能を検証するための単体テストを提供することです。
iOSをテストした経験はありません。
私の最初の考えは、私は、application:didReceiveLocalNotification
が呼び出されたかどうかを確認するために、私はそれがクラッシュし、これを実行しようとしましたUIApplication.sharedApplication().delegate = mockedDelegate
、のようなものをテストすることができますので、何らかの方法でUIApplicationDeledgate
をモックすることでした。
私の次の考えは、UIテストを使用して警告ダイアログを監視することでした。これはちょっとしたことで、通知用に登録できました(そして、XCTestCase
APIを使ってタップすることができた「通知を許可する」ダイアログが表示されました)が、通知はアラートとしてではなくバナーとして表示されましたアプリケーション自体の中から)!?
この時点で、私は次に何を試すべきかについて迷っています。
私は現在モックフレームワークを使用していません。スウィフトは自分自身には役に立たないと私は理解していますが、これは私が読んでいるところです(NSObject
から拡張しない限り)。