Apex StandardControllerのaddFieldsの使い方のサンプル
環境
Salesforce
standardControllerのaddFieldsを利用すればクエリを投げずに追加で項目を取得することが可能です。
private void TestController(ApexPages.StandardController stdController) { stdController.addFields(new List<String> {'Test__c', 'Test__r.Name'}); }
便利な処理ですが、テストクラスで下記エラーが発生することがあります。
System.SObjectException: You cannot call addFields when the data is being passed
into the controller by the caller.
エラーの発生はテストクラス内で次のように対象オブジェクトをnewするような処理を書いたときに発生します。
TestController cls = new TestController
(new ApexPages.StandardController(new Demo__c()));
Test.isRunnningTestを利用する方法
if (!Test.isRunningTest()) { stdController.addFields(new List<String> {'Test__c', 'Test__r.Name'}); }