Symfony と Doctrine を使用してプロジェクトを開発していますが、テストに問題があります。私は Fixtures を使用してテスト用のデータをロードしていますが、いくつかのエンティティはそれらの間に関連付けられています。空の DB テーブルで初めてテストを実行すると、テストは問題なく成功します。しかし、もう一度テストを実行すると、エラーが発生しました。
Doctrine\DBAL\DBALException: 'DELETE FROM Ent' の実行中に例外が発生しました:
SQLSTATE[23000]: 整合性制約違反: 1451 親行を削除または更新できません: 外部キー制約が失敗しました (
my_db
.Ent
, CONSTRAINTFK_FE5D1D1E727ACA70
FOREIGN KEY (parent_id
) REFERENCESEnt
(id
))
エラーの理由は明らかです。別の行が外部キーを介して参照している場合、その行を削除できません。
最初に外部キー制約を無効にしてテーブルを手動で切り捨て、空のテーブルでテストを再度実行すると、テストは再び成功します。しかし、テストを実行するたびにこれを繰り返さなければなりません。
問題は、Symfony または PHPUnit にこれを自動的に処理させる方法はあるのでしょうか?
ありがとう!
編集: Liip\FunctionalTestBundle\Test\WebTestCase クラスを使用していることを忘れていました。