SObject row was retrieved via SOQL without querying the requested field

Error:  SObject row was retrieved via SOQL without querying the requested field

to overcome, we can add the standard controller extension like:

public ContactExt(ApexPages.StandardController sc) {
        sc.addFields(new List<String> {'Account.BillingCity'});
        record = (Contact)sc.getRecord();
}

and make sure to add the isRunningTest, so that there is no issue while creating the test method for above apex class like:

public ContactExt(ApexPages.StandardController sc) {
                  if (!Test.isRunningTest()) { 
            sc.addFields(new List<String> {'Account.BillingCity'});
        }           
        record = (Contact)sc.getRecord();
}

or otherwise, facing the issue while executing the test method like below error:
but while executing the Apex Test Method, its throwing the error like:
System.SObjectException: You cannot call addFields when the data is being passed into the 
controller by the caller

Written by 

Salesforce MVP | Lightning Champion | 16x Salesforce Certified | Application Architect | 6x Trailhead Ranger | Techforce Services | Australia

Leave a Reply

Your email address will not be published. Required fields are marked *

*