Manipulate CreatedDate property of test-context sObjects

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!

Author: 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 14x Certified on the platform.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.