MENU
Abo
某SIer勤務。
ITエンジニアです。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

Apexのテストクラスでユーザを作成 / 使用する【runAsメソッドの利用】

テストクラスで、ユーザを指定してテスト実施を行いたい時ってありますよね。

このプロファイルでデータ作成したい!とか、このロールじゃなきゃダメなんだ!とか。

そんな時に有効な「runAsメソッド」を使ってみましたので、軽くご紹介。

目次

runAsメソッドとは

runAsメソッドとは、簡単に言うと、テストクラス内で作成したユーザでテストを実行できるメソッドです。

普段は、システム管理者の自分で実行していたテストも、テストクラス内で新しくユーザを作成することでプロファイルやらメールアドレスやらを自由に設定した状態のユーザでテストを実行できるわけです。

すばらしい。

runAsメソッドの使い方

下のサンプルコードでは、テストクラス内で作成したユーザで、取引先をInsertするテストが書かれています。

テスト実行部分(test.startTest~test.stopTestの間の部分)で、「system.runAs()」が使用されています。

テストを実行したいユーザを引数として渡すことで(ここでは「u」)テストの実行者を指定することができます。

@isTest
private class CreateAccountTest {
    @isTest static void test1(){
        
        //ユーザ作成
        User u = createUser();
        
        //取引先作成
        List<Account> accList = createAcc();
        
        test.startTest();  
        //作成したユーザで取引先を作成
        system.runAs(u){
            List<Database.SaveResult> results = database.insert(accList,false);
       System.debug('Current User: ' + UserInfo.getUserName());
            System.debug('Current Profile: ' + UserInfo.getProfileId());
        }
        test.stopTest();           
    }
    
    static User createUser(){
        
        Profile p = [Select Id from Profile Where Name = '営業部長'];
        
        User u = new User(
            LastName = 'testuser',
            Alias = 'newUser',
            Email = 'test@xx.xxx.com',
            UserName = 'test@xx.xxx.com',
            ProfileId = p.Id,
            EmailEncodingKey = 'ISO-2022-JP',
            LanguageLocaleKey = 'ja',
            LocaleSidKey = 'ja_JP',
            TimeZoneSidKey = 'Asia/Tokyo'
        );
        return u;
    }
    
    static List<Account> createAcc(){
        List<Account> accList = new List<Account>();
        for ( Integer i=0;i<2;i++ ) {
            accList.add(new Account(Name = '取引先'+i));
        }
        return accList;
    }

}

ちなみに、runAsメソッドでは、ユーザライセンスの制限は無視されるようで、組織に追加ユーザライセンスがない場合でも、runAsメソッドを使用することで新しいユーザを作成できます。

まとめ

runAsメソッド。

いいものを知れました。

開発をしていると、どうしても特定のユーザでないとコードがカバーできない所が出てくるので、実行ユーザの指定は不可欠ですね。

おわり。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
Salesforceエンジニアです。
日々の学びをつらつらと書いています。
Certified Administrator
Certified Platform DeveloperⅠ
Certified Platform DeveloperⅡ
Certified Sales Cloud Consultant

コメント

コメントする

CAPTCHA


目次