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