バックグラウンド:
- 中程度の DB スキーマ (約 70 のテーブル)
- それらの間に多くの外部キーとその他の制約 (null などではない) がある
- すべてのテスト用の共有 DB フィクスチャ
- 各テストの後に「触れた」テーブルを切り捨て、テスト前にそこにあったものをそこに置くいくつかの単純な分解ロジック
- DB は、JPA/Hibernate/Toplink またはその他のオブジェクト リレーショナル マッピング ソリューションによってクエリされます。
さて、大きな問題は、DB にいくつかのレコードを追加したいということです。これは手動で、つまり (問題のテストの前に実行される) SQL スクリプトを介して行う必要があります。これにより、ほぼすべてのテストでミステリー ゲストの問題が発生します。
どのように対処しますか?
私の考えは次のとおりです。
- 非常に多くの制約があるため、すべてのテストに対して新しいフィクスチャを作成するのはやり過ぎです。
- 別の方法は、オブジェクトのスタブを指定すると、DB に入れる準備ができているオブジェクトを返す、つまり制約に違反しないオラクルを作成することです。もちろん、この優れたソリューションは、そのような野獣の作成に少し時間を費やす必要があるため、マネージャーには好まれません。