No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Newer Version Available
テストメソッドでの混合 DML 操作
テストメソッドでは、DML 操作を実行するコードが System.runAs メソッドブロックで囲まれている場合、「DML 操作で同時に使用できない sObject」に記載された sObject とその他の sObject の間の混合 DML 操作の実行が許可されます。たとえば、これによりロールとその他の sObject を持つユーザを同じテスト内で作成できます。
例: System.runAs ブロックでの混合 DML 操作
テストメソッドで Test.startTest と Test.stopTest を使用して混合 DML エラーを回避する
混合 DML 操作を実行するコードブロックを System.runAs ブロックで囲んでも、混合 DML 例外エラーが返されることがあります。これは、テストメソッドが、グループの削除など、他の操作とは混合できない DML 操作を実行する future メソッドをコールした場合に発生する可能性があります。この場合、混合 DML 例外が返されたら、future メソッドコールを行うコードブロックを、Test.stopTest および Test.startTest ステートメントで囲みます。
この例では、Test.startTest および Test.stopTest ステートメントで delete ステートメントを囲むことにより、テストで混合 DML 例外エラーを回避する方法を示します。delete ステートメントにより、混合 DML 操作は future メソッドで実行されることになるため、ステートメントを Test.startTest および Test.stopTest ステートメントで囲みます。delete ステートメントはトリガを起動し、Util クラスの deleteGroup future メソッドをコールして取引先挿入トリガですでに挿入されていたグループを削除します。
これは、混合 DML 操作を起動するテストクラスです。取引先挿入および削除がトリガを起動します。
これは、グループを挿入する取引先挿入トリガです。
これは、future メソッドをコールしてグループを削除する取引先削除トリガです。
これは、グループを削除する future メソッドです。