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

環境
salesforce

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

サンプルコード

@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