Apex runAsメソッドの使い方のサンプル

環境
Salesforce

構文
System.runAs(u){
// 処理コードを記載
}
runAsメソッドを使用すると、ユーザ権限と項目レベルの権限は強制実行されなく、レコード共有のみを適用します。
通常、Apexコードはすべてシステムモードで実行されますが、runAsメソッドを使用するとユーザを指定して
Apexを実行することができます。

操作例

@isTest
private class TestRunAs {
   public static testMethod void testRunAs() {
        // テストデータの作成
        // ユニックユーザー名の作成
        String uniqueUserName = 'standarduser' + DateTime.now().getTime() + '@sample.com';
        // システムユーザとして実行 プロファイルを検索する
        Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
        //新規ユーザに割り当て
        User u = new User(Alias = 'standt', Email='standarduser@sample.com',
            EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
            LocaleSidKey='en_US', ProfileId = p.Id,
            TimeZoneSidKey='America/Los_Angeles',
            UserName=uniqueUserName);

        System.runAs(u) {
              // 作成したユーザで処理コードの実行
              System.debug('現在のユーザ: ' + UserInfo.getUserName());
              System.debug('現在のプロファイル: ' + UserInfo.getProfileId());
          }
    }
}

 

Apex

Posted by arkgame