Apex Test Classで作成者(CreatedBy)・最終更新者(LastModifiedBy)を設定する方法

概要

Apex Test Classで作成者(CreatedBy)・最終更新者(LastModifiedBy)を設定する場合は、System.runAs()メソッドを利用します。

それにより各DMLの実行ユーザを指定することが可能となり、当該ユーザが作成者・最終更新者となります。

無論これによって、Apex Class上でユーザの各項目情報を取得することも可能になります。(※Account.Lastmodifiedby.Emailなどで)

サンプルコード

@isTest static void Test(){

User user = TestDataFactory.createUserRecord('テスト');   
List<Account> testAccountList = TestDataFactory.createAccounts(10);

    Test.startTest();
        System.runAs(user){
            insert testAccountList;
        }
    Test.stopTest();
}

runAsの中身は、引数に指定したユーザにより実行されます。

TestDataFactoryを使わない場合は以下のようにφ(・ω・ )かきかきします。

User u = new User(
alias = 'testuser',
email='testuser@gmail.com', 
emailencodingkey='UTF-8', 
lastname='Testing', 
languagelocalekey='ja_JP', 
localesidkey='ja_JP',
profileid = p.Id, 
serroleid = r.Id, 
username='testuser@gmail.com');

Salesforce

Posted by regardie