【Salesforce】MIXED_DML_OPERATION, 非設定オブジェクトを更新した後の設定オブジェクト上の DML 操作 (またはその逆) は、許可されていません
Salesforceでテストクラスを作成する際に、エラーが発生しました。
エラーの内容はこんな感じです。
MIXED_DML_OPERATION, 非設定オブジェクトを更新した後の設定オブジェクト上の DML 操作 (またはその逆) は、許可されていません
エラーのメッセージを見ただけではよく分かりませんね。
SalesforceのSObjectには設定オブジェクトと呼ばれるものがあり、非設定オブジェクトのDML操作の後に設定オブジェクトのDML操作を行うとこのエラーが発生します。
処理の途中で権限が変わったりするのを防ぐためだそうです。
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_dml_non_mix_sobjects.htm
ちなみに、今回はテストクラスでグループやグループメンバを作成したことによって発生しました。
テストクラスでの回避策としては、System.runAsを使用することだそうです。
別のユーザを指定しなければいけないと思っていましたが、サンプルを見るとそんなこともないみたいですね。
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_dml_non_mix_sobjects_test_methods.htm
そのあたりはよく分かりませんね。
何だか久しぶりに見たエラーな気がします。
No comments.