テストクラスにおけるDML混合エラーの発生と対応
久々コーディングで発生したためメモ。
テストクラスにおいて、テスト用の「メールテンプレート」と「ケース」のレコードの作成時にDML混合エラー(※)が発生した。
※設定オブジェクトと非設定オブジェクトのレコードを同じトランザ
上記の「Apex 開発者ガイド」の「DML 操作で同時に使用できない sObject」に設定オブジェクトとして記載されていないが、「メールテンプレート」は設定オブジェクトとして扱われている。
今回はテストクラスにおけるテスト用データの作成にてエラーが発生したため、
上記「Apex 開発者ガイド」の「テストメソッドでの混合 DML 操作」の記載を参考に、
「メールテンプレート」と「ケース」のレコードのDMLコードをSystem.runAs メソッドブロックで囲む対応を行った。
結果、「メールテンプレート」と「ケース」のレコードが同じトランザクションで作成できるようになった。