我有一个使用 Doctrine 2 的 Zend Framework 应用程序(1.11 版)。我已经设置了 PHPUnit 来在我的模型和表单上运行测试等等。测试工作得很好,但有一个问题:一旦完成,它们就会将测试数据留在数据库中。这是我的一项测试的基本示例:
class VisaTypeEntityTest extends ModelTestCase
{
public function testCanSaveAndRetrieveVisaType()
{
$addVisaType = new \Entities\VisaTypes();
$addVisaType->setEnglishName('Test Visa Type')
->setJapaneseName('試し')
->setKanaName('タメシ')
->setDescription('Description of the test visa type');
$this->em->persist($addVisaType);
$this->em->flush();
$getVisaType = $this->em->getRepository('\Entities\VisaTypes')
->findOneByEnglishName('Test Visa Type');
$this->assertEquals('Test Visa Type', $getVisaType->getEnglishName());
}
}
显然,必须将数据实际输入数据库,以确保一切都是洁净的。但是我不希望每次运行测试时所有的测试数据都会弄乱数据库,也不想去手动删除它。
有什么我可以做的,例如在测试完成后使用 tearDown() 方法来摆脱测试数据?如果是这样,是否可以将表的 id 字段中的自动增量“回滚”到它们之前的状态?我知道 id 之间是否存在差距真的不重要,但是如果有某种方法可以让 Doctrine 重置自动增量值,那就太好了。