2017-06-14 3 views

答えて

-2

免責事項:私はあなたがトークンを生成することはできません...

これを行っていない...ので、私は答えはノーだろうと思い!何ができるのは、あなたのnotificationManagerをスタブデータでモックすることです。スタブデータあなたのテストでは

  1. はそれに何をしたいあなたのコールバック関数のダウンロードをしていますか?
  2. アプリがフォアグラウンドになっているときにアラートがあると仮定します。 はアラートを表示していますか?

は、そうでなければ、それは、あなたがOSをテストしているの通知を受信して​​、それが間違っている時にアプリがcallbackを投げるかどうかを確認するために、テストまで純粋にしている場合。独自のコードのみをテストする必要があります。

あなたnotificationManagerをテストすることによって、私はおおよそのようなものを意味する:今、あなたは何をすべきかhere

由来

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 

     NotificationManager.shared.handle(userInfo) 
} 

あなたNotificationManagerクラス

func handleAPNSMessage(_ message:[AnyHashable: Any]) { 

if let aps = message["aps"] as? NSDictionary { 
    if let alert = aps["alert"] as? NSDictionary { 
     if let message = alert["message"] as? NSString { 
      //Do stuff 
     } 
    } else if let alert = aps["alert"] as? NSString { 
     //Do stuff 
     } 
    } 
} 

を、あなたはhandleAPNSMessageを呼び出しモックあなたと同じように見えるJSONオブジェクトverはあなたに送るでしょう

あなたが狂って実際にリモートの通知を複製する場合は、独自のスタブデータを使用して地元の通知を作成し、アプリケーションが期待通りに動作するかどうかを確認してください...

+0

私が開発したツールからプッシュ通知を起動できます。それは問題じゃない。プッシュ通知からXCTestCaseを介して要素とその識別子を取得できるかどうかを確認していますか? – Confused

+0

@要素「要素」と「識別子」の意味がわからない。ペイロードを介してオブジェクトを送信しているということですか?すべてのキー/値を取得することができます - それをトリガできるとしてください – Honey

+0

私はこの問題にXCTestのUIテストについて尋ねました。 – Confused

関連する問題