はむはむエンジニアぶろぐ

365日エンジニアリング

【MySQL】外部キー制約のついたテーブルに対してのテスト

外部キー制約がついたテーブルを使用してテストをしたい場合、外部キー制約が邪魔をしてデータを削除できない事があります。
じゃあ、テストしづらいから制約を外す?
もちろん、これは間違いです。


外部キー制約がついたテーブルに対してのアプローチは、以下かなと思います。

  1. 制約エラーが起きないように辿ってテーブルのデータを削除する
  2. テスト中のみ外部キー制約を外す

1と2どちらがいいか、ケースバイケースだと思いますが、私はよく2の方法で行います。

MySQLだとこんな感じ。

SET FOREIGN_KEY_CHECKS = 0