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'});
}

 

IT

Posted by arkgame