Apex 公開コールバックのテスト
Apex テストでは、イベントメッセージがテストイベントバスで同期的に公開されます。テストでコールバックメソッドの実行をシミュレートするため、イベントメッセージを配信したり、イベントメッセージの公開を失敗させたりします。
1 つのイベントまたはイベントのバッチを公開するときの失敗をシミュレートするには、次のメソッドをコールします。
Test.getEventBus().fail() メソッドを使用すると、コールの直後にイベントの公開が失敗し、イベントメッセージがテストイベントバスから削除されます。このメソッドでは、コールバッククラスの onFailure() メソッドが呼び出されます。イベントメッセージを公開できない場合は、プラットフォームイベントで定義されているどのトリガーも、失敗したイベントを受信しません。
イベント配信の成功をシミュレートするには、Test.getEventBus().deliver(); メソッドをコールするか、Test.stopTest() の後にイベントを配信します。イベントメッセージは、それらの各ステートメントの直後に配信されます。イベント配信が成功すると、コールバッククラスの onSuccess() メソッドの実行がトリガーされます。
例: MyCallbackTest テストクラス
次のクラスの例は、前述した FailureAndSuccessCallback クラスのテストクラスです。このテストクラスは、テストイベントメッセージをテストイベントバスで公開するときの成功と失敗をテストする方法を示しています。このテストクラスを実行する前に、[設定] で表示ラベルの Order Event と Order Number の Text(18) 項目を指定して、プラットフォームイベントを定義します。
例: MyCallbackTestWithCorrelation テストクラス
次のクラスの例は、前述した FailureCallbackWithCorrelation クラスのテストクラスです。このテストクラスは、テストイベントメッセージをテストイベントバスで公開するときの失敗をテストする方法を示しています。コールバックでは、イベントの公開が最大 2 回再試行されます。そのため、テストでは、テストイベントの公開が 1 回のループで 2 回失敗します。テストでは、毎回コールバックが retryCounter 変数の増加を確認してイベントの公開を再試行することが検証されます。このテストクラスを実行する前に、[設定] で表示ラベルの Order Event と Order Number の Text(18) 項目を指定して、プラットフォームイベントを定義します。