正攻法(作成日)
↓setCreatedDateメソッドを利用する。
@isTest
private class SetCreatedDateTest {
static testMethod void testSetCreatedDate() {
Account a = new Account(name='myAccount');
insert a;
Test.setCreatedDate(a.Id, DateTime.newInstance(2012,12,12));
Test.startTest();
Account myAccount = [SELECT Id, Name, CreatedDate FROM Account
WHERE Name ='myAccount' limit 1];
System.assertEquals(myAccount.CreatedDate, DateTime.newInstance(2012,12,12));
Test.stopTest();
}
}
正攻法(最終更新日時)
↓静的リソース使う。
裏技(SIerは使用厳禁)
監査項目の設定を有効化すると、Account.CreatedDate = Datetime.now().addDays(-10)やAccount.LastModifiedDate = Datetime.now().addDays(-5)などで直に作成日や最終更新日時をいじれるようになります。(※Insert時に設定できるだけで、項目のUpdateは不可のまま)
なので、普段は監査項目の設定を無効化しておきたい場合でも、Apexテストの実行時やApexClassのリリース時だけ一時的に有効化する作戦を取れば、正攻法のような面倒な設定をしなくて済みます。