再試行されたイベントメッセージのテスト
Apex トリガで EventBus.RetryableException を発生させることで、イベントメッセージの処理を再試行できます。API バージョン 43.0 以降では、Test.EventBus.deliver() をコールして EventBusSubscriber 項目を調べることで、再試行されたイベントメッセージをテストできます。
Apex テストで再試行されたイベントメッセージを強制的に再配信するには、Test.EventBus.deliver() をコールします。このメソッドでは、最後の deliver() コール以降に公開された他のイベントメッセージも配信されます。
API バージョン 43.0 以降では、次の新しい EventBusSubscriber 項目を確認して、再試行されたトリガをテストできます。
- Retries
- LastError
EventBusSubscriber.Retries 項目は、トリガが再試行された回数を示します。
EventBusSubscriber.LastError は、最後に実行された throw ステートメントに渡されたエラーメッセージを示します (throw new EventBus.RetryableException('Error Message'))。
例
このテストメソッドは、トリガを起動するテストイベントメッセージを配信します。関連付けられたイベントトリガで EventBus.RetryableException を 2 回発生させます。テストでは、EventBusSubscriber を照会して Retries 項目値を確認することで、トリガが 2 回再試行されたことを検証します。
このテストクラスを実行する前に、Order_Event__e という名前のプラットフォームイベントと、Text 型の Order_Number__c 項目および Checkbox 型の Has_Shipped__c 項目を定義します。このテストクラスは、イベントを再試行する関連付けられたトリガ (OrderTriggerRetry) があることを前提とします。このトリガはこの例では提供されていません。