Apex CreatedDate を設定する前にテストレコードを挿入するサンプル
環境
Salesfoce
構文
ApexテストメソッドTest.setCreatedDate(recordId, createdDatetime)を使用して、
テスト実行中にsObjectレコードのCreatedDateフィールドを設定することができます。
書式
setCreatedDate(recordId, createdDatetime)
テストコンテキスト sObject の CreatedDate を設定します。
@isTest(SeeAllData=true) アノテーションのあるメソッドでは setCreatedDate を使用できません。
これらのメソッドは組織内のすべてのデータにアクセスできるためです。
このメソッドは、sObject ID と Datetime 値の 2 つのパラメータを取ります。いずれも null にできません。
使用例
CreatedDate を設定する前にテストレコードを挿入します。
サンプルコード
@isTest
private class SetCreatedDateTest {
static testMethod void testSetCreatedDate() {
Account a = new Account(name='myAccount');
insert a;
Test.setCreatedDate(a.Id, DateTime.newInstance(2022,11,11));
Test.startTest();
Account myAccount = [SELECT Id, Name, CreatedDate FROM Account
WHERE Name ='myAccount' limit 1];
System.assertEquals(myAccount.CreatedDate, DateTime.newInstance(2022,11,11));
Test.stopTest();
}
}
@isTest
private class SetCreatedDateTest {
static testMethod void testSetCreatedDate() {
Account a = new Account(name='myAccount');
insert a;
Test.setCreatedDate(a.Id, DateTime.newInstance(2022,11,11));
Test.startTest();
Account myAccount = [SELECT Id, Name, CreatedDate FROM Account
WHERE Name ='myAccount' limit 1];
System.assertEquals(myAccount.CreatedDate, DateTime.newInstance(2022,11,11));
Test.stopTest();
}
}
@isTest private class SetCreatedDateTest { static testMethod void testSetCreatedDate() { Account a = new Account(name='myAccount'); insert a; Test.setCreatedDate(a.Id, DateTime.newInstance(2022,11,11)); Test.startTest(); Account myAccount = [SELECT Id, Name, CreatedDate FROM Account WHERE Name ='myAccount' limit 1]; System.assertEquals(myAccount.CreatedDate, DateTime.newInstance(2022,11,11)); Test.stopTest(); } }