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

環境
Salesforce

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

操作例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@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());
}
}
}
@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()); } } }
@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