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());
}
}
}