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; } } }