Symfony1 Symfony-删除并重新加载每个测试的所有数据库记录

Symfony1 Symfony-删除并重新加载每个测试的所有数据库记录,symfony1,doctrine,Symfony1,Doctrine,从Symfony网站提供的信息中,我发现我可以在每次运行单元测试时使用以下脚本加载装置数据: Doctrine_Core::loadData(sfConfig::get('sf_test_dir').'/fixtures'); 但是,每次运行单元测试时,我都希望删除并重新加载数据库中的所有记录。目前,我正在手动执行此操作(在每次测试之前运行symfony原则:build-all)。有人能给我提供一个正确的方法吗?我在最后的test/bootstrap/unit.php文件中使用了以下内容: $

从Symfony网站提供的信息中,我发现我可以在每次运行单元测试时使用以下脚本加载装置数据:

Doctrine_Core::loadData(sfConfig::get('sf_test_dir').'/fixtures');

但是,每次运行单元测试时,我都希望删除重新加载数据库中的所有记录。目前,我正在手动执行此操作(在每次测试之前运行symfony原则:build-all)。有人能给我提供一个正确的方法吗?

我在最后的test/bootstrap/unit.php文件中使用了以下内容:

$doctrine = new sfDoctrineDropDbTask($configuration->getEventDispatcher(), new sfAnsiColorFormatter());
$doctrine->run(array(), array("--no-confirmation","--env=test"));

$doctrine = new sfDoctrineBuildDbTask($configuration->getEventDispatcher(), new sfAnsiColorFormatter());
$doctrine->run(array(), array("--env=test"));

$doctrine = new sfDoctrineInsertSqlTask($configuration->getEventDispatcher(), new sfAnsiColorFormatter());
$doctrine->run(array(), array("--env=test"));

在装入夹具之前。这对我来说很好,尽管如果你有一个大的模式和很多固定装置,它可能会变慢。这里有一些关于编写高效测试的技巧,还有一个关于使用sqlite内存数据库来加速测试的技巧。

如果您只想清除表,可以通过向fixture中添加空数组,然后使用
doctor\u Core::loadData(sfConfig::get('sf\u test\u dir')。/fixtures')


请注意,这不会重置ID计数,因此如果需要,您需要使用richsage的方法。比删除、创建和填充整个数据库快得多。谢谢这是一个重复的线程与这个伟大的答案:
#Tables to emtpy    
User: []
Post: []

#Tables to load fixtures
Country:
  country1:
    name: United Kingdom
  country2:
    name: USA