본문 바로가기

카테고리 없음

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

반응형

통상 시스템 컨텍스트로 실행되는 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) {
 //具体的な処理
}
반응형