2012-02-08 10 views
9

Ho un'applicazione costruita su Symfony2 + Doctrine2 che voglio creare dei test per (usando phpunit).Infissi temporanei di Doctrine2 per test con phpunit

Per esempio se voglio testare un unico validatore contro un record nel DB, voglio creare un record che posso lavorare, ma dopo la prova non ho bisogno più. Quindi c'è un modo per creare dispositivi temporanei (o virtuali) o devo creare manualmente ed eliminarli?

risposta

20

È possibile utilizzare Doctrine DataFixture e inserire questo codice nel vostro metodo di configurazione di una classe di test di unità:

$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()); 

è possibile fare riferimento ai documenti per vedere come creare classi DataFixture.

Ecco un buon esempio di come farlo: Symfony 2 + Doctrine 2 + PHPUnit 3.5: Serialization of closure exception

PS: presumo di avere un lavoro $ em (EntityManager) in questo esempio.

+2

Oppure, $ loader = nuovo \ Symfony \ Bridge \ Doctrine \ DataFixtures \ ContainerAwareLoader (statico :: $ kernel-> getContainer()); Se è necessario utilizzare un dispositivo che implementa ContainerAwareInterface. Inoltre, grazie! Ho appena usato questa risposta. – skqr

+0

Il PRMPurger richiede davvero un $ em per la sua iniziazione? – Tjorriemorrie

+0

qual è il modo migliore per caricare tutti i dispositivi dalle directory src? –