카테고리 없음

세일즈포스 (Salesforce) 특정 프로필의 사용자로 Apex 테스트를 실행하는 방법

오아름 샘 2022. 1. 17. 02:44
반응형

통상 시스템 컨텍스트로 실행되는 Apex 테스트에 관해서, 임의의 사용자 컨텍스트에서의 실행을 실시하고 싶은 경우, System.runAs() 메소드를 이용합니다.

예를 들어 Platform 라이선스 사용자로 Apex를 실행할 때 문제가 발생하지 않는지 테스트하려는 경우 테스트 클래스에서 Platform 라이선스 사용자를 생성 한 다음 runAs 메서드를 사용하여 Platform 라이선스 사용자로 Apex Test를 실행할 수 있습니다.

샘플 코드(권한 세트 없음의 경우)

String uniqueUserName = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
Profile p = [SELECT Id FROM Profile WHERE Name='プロファイル名'];
User u = new User(
Alias = 'standt', 
Email='standarduser@testorg.com',
EmailEncodingKey='UTF-8', 
LastName='Testing', 
LanguageLocaleKey='ja_JP',
LocaleSidKey='ja_JP',
ProfileId = p.Id,
TimeZoneSidKey='Asia/Tokyo',
UserName=uniqueUserName);

insert u;

System.runAs(u) {
 //具体的な処理
}

샘플 코드(권한 세트 있는 경우)

String uniqueUserName = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
Profile p = [SELECT Id FROM Profile WHERE Name='プロファイル名'];
User u = new User(
Alias = 'standt', 
Email='standarduser@testorg.com',
EmailEncodingKey='UTF-8', 
LastName='Testing', 
LanguageLocaleKey='ja_JP',
LocaleSidKey='ja_JP',
ProfileId = p.Id,
TimeZoneSidKey='Asia/Tokyo',
UserName=uniqueUserName);

insert u;

PermissionSet ps = [SELECT Id FROM PermissionSet WHERE Name = '権限セット名'];
insert new PermissionSetAssignment(AssigneeId = u.Id, PermissionSetId = ps.Id);

System.runAs(u) {
 //具体的な処理
}
반응형