Comment puis-je à partir de PHP, recréer ma base de données, peut-être insérer des données par défaut. Actuellement, j'avais l'intention d'utiliser le comportement des tests d'unités.
J'utilise la doctrine 2, Zend Framework 1.11, Je pourrais utiliser le cli p> Je cherche un remplacement PHP, jusqu'à présent trouvé Ce p> mais il ressemblera à quelque chose comme p> et je Vous ne voulez pas vraiment avoir à spécifier les classes de modèle, en particulier dans le développement lorsqu'ils peuvent changer. Il ne devrait que lire à partir de toutes les classes spécifiées dans ... ci-dessous ... Tout comme avec le CLI, vous n'avez pas besoin de spécifier les classes que vous souhaitez? P> zend_test code> pour les tests d'unités p>
$driverImpl = $config->newDefaultAnnotationDriver(array(realpath('../models')));
$config->setMetadataDriverImpl($driverImpl);
3 Réponses :
doctrine prend en charge Appareils Code> Strong>
. Essayez-le. P>
Voici un tutoriel pour Symfony: Projet Symfony .Org / Blog / 2009/10/05 / Symfony-and-doctrine-2 Vous devez faire vos propres modèles manuellement et les perserveiller.
Vous pouvez utiliser p>
L'extension PHPUnit pour la doctrine offre plusieurs hameçons dans l'extension de la base de données PHPunits et offre un moyen très pratique de tester votre code de doctrine 2 sur une base de données. P> blockQuote>
Il existe quelques exemples dans le Readme, y compris un exemple qui montre comment créer le schéma de base de données à la volée. Benjamin Eberlei est une doctrine 2 contributeur essentielle. P>
Voir également le guide ultime de B. Eberlei pour tester la DB avec PHPUNIT P>
- http://www.phpunit.de/manual/dbunit.txt < / li> ul>
Parce que vous avez défini le chemin d'accès aux modèles lors de la configuration de l'entitéManager, vous pouvez créer le schéma au code sans avoir à redéclairer ce chemin (et sans avoir à déclarer chaque classe). Pour ce faire, vous devez faire référence à votre instance configurée d'EntityManager et obtenir une référence à ClassMetaDatafactory que vous pouvez ensuite appeler ClassMetaDatafactory # GetallMeData () à partir de.
Voici un exemple où j'ai une classe de bootstrap statique qui me permet Pour obtenir une référence à l'entitémanager de n'importe où et que je recrée le schéma sur l'appel d'installation () dans les tests de l'unité: p>
(référence) i> Chapitre en PHPUnit sur les tests de base de données a>
@Gordon, merci, je pense que ce sera la bonne façon d'unité tester mes modèles, seule chose est au lieu d'une connexion PDO, comment puis-je utiliser la connexion de la doctrine? J'utilise Doctrine 2
J'utilise essentiellement la même configuration que vous, sauf que je tire la liste des noms de classes sur une config, ce qui est plus facile à entretenir. Cependant, j'ai découvert que l'appelant
dropschema () code> et
CreateSchema () code> à chaque test est vraiment i> coûteux et une grande suite de tests prend pour toujours courir. L'utilisation de luminaires PHPUNIT est beaucoup plus rapide. Je vais devoir vérifier également l'extension de Benjamin.
@Bryan M., mais les accumulations s'occuperont-elles des changements de schéma de base de données? Oui, je ne changerai probablement pas le schéma de la base de données à chaque fois, mais c'est juste au cas où.
Ils ne le feront pas. Mon schéma change assez souvent que l'exécution d'une migration manuelle n'est pas trop gênante. Je me cache également mon schéma à un * .sql qui peut faire la réinsertion légèrement plus rapidement. Il suffit de ne pas exécuter de schéma-régénération à chaque test, et vous devriez aller bien.