Manipulate CreatedDate property of test-context sObjects

Matt/ July 5, 2016/ Salesforce, Technology

One thing I somehow missed in the Spring ’16 update is a new method in the System.Test class called setCreatedDate() .


Why is this important?

Suppose you were trying to test an update trigger on an sObject, and you wanted to look at the timespan between created date and now. What you need to do is create a record with CreatedDate in the past. The problem is CreatedDate is an audit field, and can’t be written to.

This method is easy to use and does as advertised: sets CreatedDate for a test-context sObject.

Account account = new Account(Name = 'My Test Account');
insert account;

Datetime yesterday = Datetime.now().addDays(-1);
Test.setCreatedDate(account.Id, yesterday);

And now you can go about writing the rest of your test class.  If you missed this little notice as well, I hope I’ve made your life easier!

Share this Post

About Matt

Matt is a seasoned Salesforce Developer / Architect, with implementations of Sales Cloud, Service Cloud, CPQ, Experience Cloud, and numerous innovative applications built upon the Force.com platform. He started coding in grade 8 and has won awards ranging from international scholarships to internal corporate leadership awards. He is 37x Certified on the platform, including Platform Developer II, B2B Solution Architect and B2C Solution Architect.