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

Newer Version Available

This content describes an older version of this product. View Latest

Limits、startTest、および stopTest の使用

Limits メソッドは、メソッドのコール数やヒープサイズの残りの量など、特定のガバナの具体的な制限を返します。

各メソッドには 2 つのバージョンがあります。一方のバージョンのメソッドは現在のコンテキストで使用されているリソースの数��返し、もう一方のバージョンは limit という語を使用し、該当するコンテキストに使用できるリソースの合計数を返します。たとえば、getCallouts は現在のコンテキストで処理済みの外部サービスへのコールアウト数を返し、getLimitCallouts は指定されたコンテキストで使用できるコールアウトの合計数を返します。

Limits メソッドのほかに、startTest メソッドと stopTest メソッドを使用して、コードがガバナ制限にどれくらい近づいているかを確認します。

startTest メソッドは、テストコード内のテストが実際に開始するポイントをマークします。各テストメソッドは、このメソッドを 1 回のみコールできます。このメソッドの前のすべてのコードを、変数の初期化、データ構造の入力などのために使用する必要があります。これにより、テストを実行するために必要なすべてを設定できます。startTest へのコールの後および stopTest の前に実行するコードはすべて、新しいガバナ制限セットが割り当てられます。

startTest メソッドはテストのコンテキストを更新せず、コンテキストをテストに追加します。たとえば、クラスが startTest をコールする前に 98 件の SOQL クエリを作成し、startTest 後の最初の有意なステートメントが DML ステートメントである場合、プログラムはさらに 100 件のクエリを作成できます。ただし、stopTest がコールされると、プログラムは元のコンテキストに戻り、100 件の制限に達するまで追加できる SOQL クエリは 2 件だけになります。

stopTest メソッドは、テストコード内のテストが終了するポイントをマークします。このメソッドは startTest メソッドと組み合わせて使用します。各テストメソッドは、このメソッドを 1 回のみコールできます。stopTest メソッドの後に実行するコードはすべて、startTest がコールされる前に有効だった元の制限が割り当てられます。startTest メソッドの後に実行されたすべての非同期コールはシステムによって収集されます。stopTest を実行する場合、すべての非同期プロセスが同期して実行されます。

プロセスと自動起動フロー

レコード変更プロセス (プロセスビルダーで作成) をトリガする Apex テストの場合、stopTest メソッドは条件グループに複数のスケジュールが含まれる場合でも、すべての日付のスケジュール済みアクションを実行します。イベントプロセス (プロセスビルダーで作成) をトリガする Apex テストの場合、イベントを公開し、Test.getEventBus().deliver() メソッドを使用してプロセスを開始します。関連付けられているスケジュール済みアクションを実行するには stopTest メソッドを使用します。

一時停止要素のある自動起動フローをトリガする Apex テストの場合、stopTest メソッドはフローを再開し、残りの要素を実行します。時間ベースの再開イベントを待機している各一時停止要素で、フローはパスに沿ってすべての要素を再開して実行します。プラットフォームイベントを待機しているフローを再開するには、イベントを公開し、Test.getEventBus().deliver() メソッドまたは stopTest メソッドのいずれかを使用します。

フローの一時停止要素が複数の時間ベースの再開イベントを待機している場合、フローはそのいずれかのパスを実行します。どの一時停止設定のパスが実行されるかは制御できません。

キューに追加されたプロセスまたはフローが組織の非同期 Apex メソッド実行の制限を超えると、これらのフローまたはプロセスが stopTest メソッドで実行できなくなります。

メモ