我有一个使用Doctrine 2的Zend Framework应用程序(版本1.11)。我已经设置了PHPUnit来对我的模型和表单以及其他类型运行测试。测试效果很好,但有一个问题:一旦测试完成,他们会将测试数据留在数据库中。下面是我的一个测试的基本样本: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重置自动增量值,那将是非常好的。
您正在使用哪个数据库? MySQL的?如果是这样,哪个存储引擎? MyISAM或InnoDB? –
MySql数据库,InnoDb存储引擎。 – blainarmstrong