Apex System.runAs ブロックでテストメソッドを操作するサンプル

環境
salesforce

構文
User 変数名 = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
System.runAs (変数名) {処理コード}
System.runAs ブロックは、現在のユーザのコンテキストで実行されます。
このブロックは、ロールを持つテストユーザとテスト取引先を作成するという混合 DML 操作を実行します。

サンプルコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@isTest
private class MixedDML {
static testMethod void mixedDMLExample() {
User user;
Account acc;
User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
// 現在のユーザーでaccountを挿入する
System.runAs (currentUser) {
Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
UserRole r = [SELECT Id FROM UserRole WHERE Name='COO'];
user = new User(alias = 'yamada', email='yamada@acme.com',
emailencodingkey='UTF-8', lastname='Taro',
languagelocalekey='en_US',
localesidkey='en_US', profileid = p.Id, userroleid = r.Id,
timezonesidkey='America/Los_Angeles',
username='yamada@acme.com');
insert user;
acc = new Account(name='Acme');
insert acc;
}
}
}
@isTest private class MixedDML { static testMethod void mixedDMLExample() { User user; Account acc; User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()]; // 現在のユーザーでaccountを挿入する System.runAs (currentUser) { Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; UserRole r = [SELECT Id FROM UserRole WHERE Name='COO']; user = new User(alias = 'yamada', email='yamada@acme.com', emailencodingkey='UTF-8', lastname='Taro', languagelocalekey='en_US', localesidkey='en_US', profileid = p.Id, userroleid = r.Id, timezonesidkey='America/Los_Angeles', username='yamada@acme.com'); insert user; acc = new Account(name='Acme'); insert acc; } } }
@isTest
private class MixedDML {
    static testMethod void mixedDMLExample() {  
        User user;
        Account acc;
        User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
       // 現在のユーザーでaccountを挿入する
        System.runAs (currentUser) {
            Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
            UserRole r = [SELECT Id FROM UserRole WHERE Name='COO'];
            user = new User(alias = 'yamada', email='yamada@acme.com', 
                emailencodingkey='UTF-8', lastname='Taro', 
                languagelocalekey='en_US', 
                localesidkey='en_US', profileid = p.Id, userroleid = r.Id,
                timezonesidkey='America/Los_Angeles', 
                username='yamada@acme.com');
            insert user;
            acc = new Account(name='Acme');
            insert acc;
        }
    }
}

 

Apex

Posted by arkgame