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

By | August 16, 2021

前書き

同じエラーが発生した誰かのための備忘録(´・ω・`)ノ

エラー発生パターン1

Repro:同一価格表&同一商品に関する価格表エントリが既に存在する状態でINSERT操作をした場合

解決策:INSERTしようとしている価格表エントリの情報(=参照先の価格表or商品)を修正する

エラー発生パターン2

Repro:パターン1のような問題が何もないにも関わらずエラー発生

間違った解決策:価格表エントリのテストデータのSetupを諦めて、SOQLで価格表エントリのレコ-ドを取得(※事実上のseeAllData=true状態となるため、アンチパターン)

正しい解決策:エラーをガン無視して、エラーのある状態のまま本番環境にリリースする(すると、本番環境では全く問題なく動作する)