テストコンテキストでのイベントおよびイベントバスプロパティ
テストコンテキストでは、イベントメッセージとイベントバスのプロパティは異なります。イベントと登録者の状態情報はリセットされ、保持されません。
テストイベントおよびテストイベントバス
Apex テストでイベントメッセージを公開すると、イベントメッセージは Salesforce イベントバスから独立したテストイベントバスに公開されます。Apex テストでは、イベントと登録者の状態情報は次のようにリセットされます。
- イベントの再実行 ID の値が 0 にリセットされ、1 (最初のテストイベントメッセージの) から開始されます。
- EventBusSubscriber のイベント状態情報がリセットされます。最後に処理された再実行 ID (EventBusSubscriber.Position) と最後に公開された再実行 ID (EventBusSubscriber.Tip) が 0 にリセットされます。
- テストイベントが公開されて登録者内で処理されると、イベント状態情報が更新されます。
- 登録者状況が Running (EventBusSubscriber.Status) にリセットされます。
- EventBusSubscriber を照会すると、イベント状態を取得できます。たとえば、次の SOQL クエリでは、Order_Event__e イベントへのすべてのトリガ登録者に関するいくつかの情報を取得します。
1SELECT Name, Position, Retries, LastError 2FROM EventBusSubscriber 3WHERE Topic='Order_Event__e' AND Type='ApexTrigger'
Apex テストの実行が終了すると、イベントと登録者の状態情報は、テスト以外の値に戻ります。
イベントのテストと制限事項
イベント割り当てはテストイベントに適用されません。テストイベントには独自の公開制限があり、テストメソッドでのイベントメッセージの公開は 500 件に制限されます。Apex テストコンテキストから公開されるイベントメッセージの数が制限を超えた場合、LIMIT_EXCEEDED 状況コードが含まれるエラーが返されます。このエラーは、EventBus.publish Apex メソッドが返す SaveResult にあります。
イベント登録者のテスト
Apex テストを使用して、プラットフォームイベントの公開と登録をテストします。Apex テストでイベントメッセージを公開すると、イベント登録者に通知され、次の実行が開始されます。
- Apex トリガ
- プロセス (API バージョン 43.0 以降で保存された Apex テストクラスを使用する場合)
- フロー (API バージョン 43.0 以降で保存された Apex テストクラスで使用する場合)
Apex テストでは、CometD ベースの登録者は開始されません。