KanaLog~かなさんのSalesforce関連ログ~

自称「Salesforceキャンペーン芸人」のKanaさんの活動記録です。Salesforce Developer Group TokyoとService Cloud Trailblazersに運営として参加しています。

テストクラスにおけるDML混合エラーの発生と対応

久々コーディングで発生したためメモ。

 

テストクラスにおいて、テスト用の「メールテンプレート」と「ケース」のレコードの作成時にDML混合エラー(※)が発生した。

設定オブジェクトと非設定オブジェクトのレコードを同じトランザクションで作成しようとする際に発生するエラー

 

developer.salesforce.com

上記の「Apex 開発者ガイド」の「DML 操作で同時に使用できない sObject」に設定オブジェクトとして記載されていないが、「メールテンプレート」は設定オブジェクトとして扱われている。

 

developer.salesforce.com

今回はテストクラスにおけるテスト用データの作成にてエラーが発生したため、

上記「Apex 開発者ガイド」の「テストメソッドでの混合 DML 操作」の記載を参考に、

「メールテンプレート」と「ケース」のレコードDMLコードをSystem.runAs メソッドブロックで囲む対応を行った。

結果、「メールテンプレート」と「ケース」のレコードが同じトランザクションで作成できるようになった。