[Salesforce]指定のユーザーでテスト実行

salesforceのユーザーである、Userオブジェクトにカスタム項目を作って、
それを使ったコードなんかを書いた時にそのユーザーでの実行が必要になる。
そんな時のメモ。

テスト実行

system.runas(){}を使う。
引数に使用するユーザーを指定し、{}内で実行する処理を書く。

ユーザーの作成

指定するユーザーをテスト内で作成するには以下のようにする。

1
2
3
4
5
6
7
8
9
10
11
Map<String,ID> profiles = new Map<String,ID>();
Profile ps = [select id, name from Profile where name = '標準ユーザ' LIMIT 1];
User standard = new User(alias = 'standt', 
  email='standarduser@testorg.com', 
  emailencodingkey='UTF-8', 
  lastname='Testing', languagelocalekey='en_US', 
  localesidkey='en_US', 
  ProfileId = ps.id,
  timezonesidkey='America/Los_Angeles', 
  username='standarduser-test@testorg.com'
);

標準ユーザーのプロフィール権限で作成している。
この時に、emailの項目とusernameを同じにしていると、すでにそのユーザーネームは使われています、とエラーが出た。

で、実行。

1
2
3
system.runas(standard){
  //実行する内容
}

参考

System.runAs()を使う時の注意点 | Salesforce Developers Japan Blog
Using System.runAs in Test Methods – null

   このエントリーをはてなブックマークに追加