2010-10-11 4 views
2

au sein de mes tests unitaires je voudrais avoir le comportement suivant:Conserver la fiche de doctrine sans persistance

$myNewDoctrineRecord = new Dto_MyRecord(); 
$myNewDoctrineRecord->pk = 1; //the primary key 
... 
$myNewDoctrineRecord->save(); 

maintenant ce disque vraiment shouldnt à la base de données persistent. Mais je voudrais faire

$myFetchedDoctrineRecord = Doctrine::getTable('Dto_MyRecord')->find(1); 
//result should be $myFetchedDoctrineRecord === $myNewDoctrineRecord 

Je sais que cela pourrait être achived avec un motif de DAO, où je remplace le DAO à une maquette. Mais peut-être y a-t-il une possibilité alors disons simplement Doctrine de ne pas persister, mais seulement de "se souvenir" des disques.

Merci! Markus

Répondre

1

Vous pouvez démarrer une transaction et à la fin de l'annulation du test. De cette façon, vous pouvez toujours trouver() les enregistrements créés dans la transaction, mais l'annulation garantira qu'ils ne sont pas conservés.

+0

oui, bonne idée! mais mon problème est la performance. Je voudrais vraiment ne pas accéder à la base de données du tout. – Markus

+0

Eh bien, la seule autre façon est de créer un objet fantaisie, je ne pense pas que Doctrine offre un autre moyen. Une autre alternative serait d'utiliser quelque chose comme la base de données SQLite pour les tests, car l'accès est rapide. –

0

Si votre machine dispose d'un peu d'espace, vous pouvez placer vos objets dans le $ _SESSION. Mais attention, les objets de Doctrine peuvent devenir assez grands.

Questions connexes