У меня есть приложение Zend Framework (версия 1.11), которое использует Doctrine 2. У меня есть 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(), чтобы избавиться от тестовых данных после завершения теста? И если да, возможно ли «откат» автоматических приращений в полях идентификаторов таблиц до того, что они были заранее? Я знаю, что на самом деле не имеет значения, есть ли пробелы между идентификаторами, но если есть способ заставить Doctrine сбросить значение автоматического увеличения, это было бы здорово.
Какую базу вы используете? Mysql? Если да, то какой механизм хранения? MyISAM или InnoDB? –
База данных MySql, двигатель хранения InnoDb. – blainarmstrong