Category Archives: Apex

Apexテストクラスのベストプラクティスおよびテンプレート

ベストプラクティス ■汎用的なテストデータは@isTest内で準備する @testSetupで準備したデータは全てのテストメソッドで使いまわすことができます。 そのため、各テストメソッドで共有して使いまわしたいテストデータは、各テストメソッド内ではなく、@testSetupアノテーション付きのメソッド内で事前に準備しておきましょう。 ■テストデータの作成は、TestDataFactoryを利用する TestDataFactoryを利用することで、オブジェクトのメタデータに依存する記述を一箇所に集約できるようになります。… Read More »

Test.startTest()・Test.stopTest()の意味と使い方

前書き Salesforceでは一般に↓のようなお作法に則ってTestClassを書くべしと言われていますが、そもそもTest.startTest()とTest.stopTest()って何ぞや?という方もいらっしゃるかと思います。 なので、今回はTest.startTest()とtest.stopTest()の意味と使い方についてご紹介したいと思います。 Test.startTest()・test.stopTest()とは何か 結論から言うと、Test.startTest()・test.stopTest()は主に下記の二つの役割を有しています。 ①Test.startTest()とTest.stopTest()の中が、その外とは別のガバナ制限のコンテクストにおいて動作するようにする。… Read More »

staticかインスタンス化か【Salesforce Apex】

前書き 任意のメソッドを呼び出す方法として、①staticなメソッドを呼び出す ②クラスをインスタンス化した上で、インスタンスメソッドを利用する という二つの方法が挙げられるかと思います。 Salesforce開発では、大抵の場面においてどちらを利用しても実現したい機能を実装すすことが可能ですが、本記事では改めてそれぞれの特徴と選択の基準についてまとめてみたいと思います。 ApexTriggerでのインスタンスメソッドの呼び出しの例 Trigger Class… Read More »

Apexコーディング規約

全てのApexClassは下記のコーディング規約を満たすことが期待される。 規約 説明 Loop内にSOQLがない ガバナ制限を回避およびパフォーマンス向上の観点から、Loop内のSOQLは推奨されません。 Loop内にSOQLがない… Read More »

ApexTriggerの基本の型

前書き ApexTriggerの基本の型をご紹介します。 今回ご紹介する型はTrigger Frameworkを利用していないいわば初心者向けの内容となっており、がっつり作り込む予定がある場合は下記のようなApexTriggerフレームワークの利用を推奨します。 ■ApexTriggerフレームワーク ・flexible-apex-trigger(※アクセンチュア推奨)… Read More »

Apex Test ClassにおけるDUPLICATE_VALUE,This price definition already exists in this price book: []エラーについて

前書き 同じエラーが発生した誰かのための備忘録(´・ω・`)ノ エラー発生パターン1 Repro:同一価格表&同一商品に関する価格表エントリが既に存在する状態でINSERT操作をした場合 解決策:INSERTしようとしている価格表エントリの情報(=参照先の価格表or商品)を修正する エラー発生パターン2… Read More »

SalesforceのREST APIを叩く

前書き JWTベアラーフローないの許してね JWTベアラーフローはテラスカイさんの記事を見るのが吉 ユーザ名パスワードフロー(外部ソフトから叩く) ①接続アプリケーションを作成する 接続アプリケーション名:~ConnectAppAPI参照名:~ConnectApp取引先責任者メール:自分のメアドOAuth認証の有効化:ONコールバックURL:使われていないポート番号(例:https://localhost:8888)選択したOAuth範囲:フルアクセス(※実際はもっとタイトにしてね)… Read More »