Временные приспособления Doctrine2 для тестирования с phpunit - PullRequest
9 голосов
/ 08 февраля 2012

У меня есть приложение, построенное на Symfony2 + Doctrine2, для которого я хочу создать несколько тестов (с использованием phpunit).

Например, если я хочу протестировать уникальный валидатор для записи в БД, я хочу создать запись, с которой я могу работать, но после теста она мне больше не нужна. Так есть ли способ создать временные (или виртуальные) приборы или мне нужно вручную создавать и удалять их?

1 Ответ

20 голосов
/ 11 февраля 2012

Вы можете использовать Doctrine DataFixture и поместить этот код в ваш метод setUp класса модульного теста:

$loader = new Doctrine\Common\DataFixtures\Loader;
$loader->loadFromDirectory('/path/to/MyDataFixtures');
$purger = new Doctrine\Common\DataFixtures\Purger\ORMPurger($em);
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor($em, $purger);
$executor->execute($loader->getFixtures());

Вы можете обратиться к документации, чтобы увидеть, как создавать классы DataFixture.

Вот хороший пример того, как это сделать: Symfony 2 + Doctrine 2 + PHPUnit 3.5: Сериализация исключения закрытия

PS: я предполагаю, что у вас есть рабочий $ em (EntityManager) в этом примере.

...