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

レッスン 2: Apex 一括処理クラスのテストの追加

このレッスンでは、CleanUpRecords 一括処理クラスのテストクラスを追加します。このクラスのテストは、一括処理ジョブを呼び出し、これまでに購入されていない商品レコードをすべて削除したことを確認します。

  1. [Repository (リポジトリ)] タブの [Setup Entity Type (設定エンティティ種別)] セクションで、[Classes (クラス)] をクリックし、[New (新規)] をクリックします。
  2. クラス名として「TestCleanUpBatchClass」と入力し、[OK] をクリックします。
  3. 自動生成されたコードを削除し、次のコードを追加します。
  4. [Save (保存)] をクリックします。

もうひとこと...

  • このテストクラスには、test という 1 つのテストメソッドが含まれます。このテストメソッドは、最初にクエリ文字列を作成し、CleanUpRecords のコンストラクタに渡します。これまでに購入されていない商品品目には、品目名が関連付けられていないはずなので、SOQL クエリでは次の条件を指定します。
    サブクエリ
    は、品目名で参照されているすべての商品品目のセットを取得します。クエリでは WHERE 句に NOT IN 演算子を使用しているため、品目名で参照されていない商品品目が返されます。
  • テストメソッドは品目名が関連付けられていない 10 件の商品品目を挿入してから、一括処理クラスメソッドでクリーンアップします。テストメソッドが実行できるバッチは合計で 1 つのみであるため、挿入するレコードの数がデフォルトのバッチサイズである 200 件よりも少なくなっています。
  • 次に、一括処理クラスが次のステートメントを含むクエリでインスタンス化されます。ここでは query 変数が CleanUpRecords のコンストラクタに渡されます。
  • 一括処理クラスを呼び出すために、Database.executeBatch をコールし、一括処理クラスのインスタンスを渡します。
  • Database.executeBatch へのコールは Test.startTestTest.stopTest で囲まれたブロック内に含まれます。これは、一括処理ジョブをテストメソッドで実行するために必要な条件です。ジョブは、Test.stopTest へのコールの後に実行されます。Test.startTest および Test.stopTest で囲まれたブロックに含まれる非同期コードは Test.stopTest の後に同期して実行されます。
  • 最後に、テストは商品品目の件数が 0 であることをチェックして、このテストで作成されたすべてのテスト商品品目が削除されたことを確認します。
  • 一括処理クラスの finish メソッドは状況を通知するメールメッセージを送信しますが、メールメッセージはテストメソッドからは送信されないため、この場合はメールは送信されません。