tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Apexテストクラスで標準価格表IDを取得する方法

Apexテストクラスで標準価格表IDをSOQLをつかって取得するとき、システム項目ではないので@isTest(SeeAllData=true)を宣言しないと取得することができません。そのため次のようにメソッドレベルで宣言して取得したりします。
f:id:tyoshikawa1106:20170320123422p:plain


SOQLクエリはこんな感じです。
f:id:tyoshikawa1106:20170320123454p:plain



ですがこんなことしなくてももっとキレイに実装する方法がありました。
Test.getStandardPricebookId()を使う方法です。


次のように宣言すると標準価格表のIDを取得できます。

Id pricebook2Id = Test.getStandardPricebookId();


これをつかって直したのがこちら。
f:id:tyoshikawa1106:20170320124653p:plain


変更後にテストクラスを実行するとエラーなくテストできました。
f:id:tyoshikawa1106:20170320124722p:plain


このメソッドはSummer'14の頃に追加されていました。不要なSeeAllDate=trueの宣言もなくなりキレイに実装できて便利です。
f:id:tyoshikawa1106:20170320125031p:plain

http://successjp.salesforce.com/features/pdf/Summer14_ReleaseNotes.pdf

参考

Test.getStandardPricebookId()を使う方法はQiitaで知りました。