この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

テストイベントメッセージの配信

Test.stopTest() ステートメントの後でテストイベントメッセージを配信します。または、任意の時点で Test.getEventBus().deliver() メソッドを使用してテストイベントメッセージを配信します。

Test.stopTest() の後でテストイベントメッセージを配信

Apex テストでプラットフォームイベントメッセージを公開するには、publish ステートメントを Test.startTest() ステートメントと Test.stopTest() ステートメントで囲みます。EventBus.publish() メソッドを Test.startTest() ステートメントと Test.stopTest() ステートメントの間でコールします。テストコンテキストでは、EventBus.publish() メソッドは公開操作をキューに追加します。Test.stopTest() ステートメントは、イベントの公開を実行し、イベントメッセージをテストイベントバスに配信します。Test.stopTest() ステートメントの後に検証を含めます。たとえば、登録された Apex トリガまたは登録されたフローの一時停止要素によって、Salesforce レコードの作成など、期待されるアクションが実行されたかどうかを検証できます。

次のサンプルテストクラスには 2 つのテストメソッドが含まれます。testValidEvent() メソッドは、イベントの公開が成功し、関連付けられたトリガが起動されたかどうかを確認します。testInvalidEvent() メソッドは、必須項目の欠落したイベントの公開が失敗してトリガが起動されないことを検証します。testValidEvent() メソッドは、1 つの Low_Ink__e イベントを作成します。Test.stopTest() の後、これは SOQL クエリを実行し、ケースレコードが作成されること、つまりトリガが起動されたことを検証します。2 番目のテストメソッドは同様のプロセスに従いますが、無効なテストを目的とします。

この例では、組織で Low_Ink__e イベントおよび関連付けられたトリガが定義されている必要があります。

必要に応じて Test.getEventBus().deliver() を使用してテストイベントメッセージを配信

Test.getEventBus().deliver() をコールすることで、登録者にテストイベントメッセージを配信するタイミングを制御できます。Test.getEventBus().deliver() を使用してテストイベントメッセージを複数回配信し、登録者が各ステップでテストイベントを処理したことを検証します。イベントメッセージを複数回配信することは、イベントの連続的な処理をテストする場合に役立ちます。たとえば、同じテスト内のループで登録者の連続アクションを検証できます。

Test.getEventBus().deliver()Test.startTest()Test.stopTest() のステートメントブロックで囲みます。

このテストクラスは Order_Event__e イベントメッセージを公開し、Test.getEventBus().deliver() を使用してそのイベントメッセージを配信します。また、トリガでイベントメッセージが処理されてタスクが作成されたことを検証します。重複するイベントメッセージ (同じ Event_ID__c カスタム項目値を持つイベント) が公開され、配信されます。このテストでは、トリガで重複イベントのタスクが作成されなかったことを検証します。

このテストクラスを実行する前に、Order_Event__e という名前のプラットフォームイベントと、Text 型の Event_ID__c 項目、Text 型の Order_Number__c 項目、Checkbox 型の Has_Shipped__c 項目を定義します。

この例のトリガは、テストクラスで公開する Order_Event__e イベントメッセージを処理します。

このトリガは、受信したイベント通知ごとに SOQL クエリを実行するため、SOQL クエリの Apex ガバナ制限に達する場合があります。

メモ