Я собрал плагин для модульного тестирования для Symfony 1.4 , который пытается автоматически управлять базой данных, аналогично тому, как это делает инфраструктура тестирования Django (уничтожать и перестраивать базу данных между тестами).
Имеет смысл уничтожить и перестроить базу данных до первого запуска теста, поскольку схема могла измениться во время разработки, и было бы просто ужасно садистски заставить разработчика синхронизировать свою тестовую базу данных со своими моделями.вручную.
Однако после первого запуска теста я обнаружил, что обычно быстрее просто удалить все данные, что было бы довольно простой задачей, за исключением проблемы внешних ключей, которая требует, чтобыданные должны быть удалены в правильном порядке.
Для MySQL это не проблема;просто SET FOREIGN_KEY_CHECKS = 0
, и вы можете разрушить ссылочную целостность для вашего сердца (конечно, до тех пор, пока не придет время SET FOREIGN_KEY_CHECKS = 1
, но в этом случае не останется никаких данных, поэтому MySQL не на что жаловаться).
Но это работает только до тех пор, пока тестовая база данных использует MySQL.Для любой другой СУБД (особенно Sqlite) это с треском провалится.
Предоставляет ли Doctrine 1.2 средство для удаления всех данных в каждой таблице или есть способ «следовать» отношениям (т. Е. Определить, какиетаблицы имеют внешние ключи и сначала удаляются из них)?