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 

I am Sakthivel Madesh, a certified Salesforce Advanced Developer & Administrator working on Salesforce Technology since 2011. I am currently working in Techforce Services as Sr. Salesforce Developer. I have worked on multiple technologies Like PHP, Java, Salesforce, I am very passionate about Salesforce and to earn 15x Salesforce Certification. I love Trailhead for learning Salesforce Skill and Become a Trailhead 5x Ranger too. I Love to Learn & Share my Salesforce knowledge to Salesforce Learners/Beginner using My Blog and Salesforce Community.

Leave a Reply

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

*