Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous ,
Je travaille sur un projet important dans lequel j'ai décidé de me mettre aux tests unitaires sérieusement. Toutefois j'ai un petit soucis dès que Doctrine 2 rentre en jeu.
Concrètement, les tests unitaires ne faisant aucun appel à la base ne fonctionnent pas (les autres fonctionnent bien).
Pire, dans la configuration "production" j'ai les données de mon serveur de test sur Internet, et dès que je remplace ces données par mon serveur en local dans l'onglet "testing", plus aucun test ne se déroule, même ceux n'utilisant pas la base...
Voici donc un bout de mon configs.yaml :
production: phpSettings: date: timezone: Europe/Paris display_startup_errors: true display_errors: true includePaths: library: APPLICATION_PATH/../library appNamespace: Workets autoloaderNamespaces: Evpatoria: Evpatoria_ bootstrap: path: APPLICATION_PATH/Bootstrap.php class: Bootstrap pluginPaths: Evpatoria_Application_Resource: APPLICATION_PATH/../library/Evpatoria/Application/Resource resources: frontController: controllerDirectory: APPLICATION_PATH/controllers moduleDirectory: APPLICATION_PATH/modules params: displayExceptions: true doctrine: entityDir: APPLICATION_PATH/models proxyDir: APPLICATION_PATH/models/proxies proxyNamespace: Proxy autoGenerateProxyClasses: true connection: driver: pdo_mysql host: mysql51-26.pro dbname: loueunetdev user: loueunetdev password: Bm4ikgjG testing: _extends: production phpSettings: display_startup_errors: true display_errors: true resources: doctrine: entityDir: APPLICATION_PATH/models proxyDir: APPLICATION_PATH/models/proxies proxyNamespace: Proxy autoGenerateProxyClasses: true connection: driver: pdo_mysql host: 127.0.0.1 dbname: workets_dev user: root password: development: _extends: production phpSettings: display_startup_errors: true display_errors: true html_errors: true resources: frontController: params: displayExceptions: true doctrine: entityDir: APPLICATION_PATH/models proxyDir: APPLICATION_PATH/models/proxies proxyNamespace: Proxy autoGenerateProxyClasses: true connection: driver: pdo_mysql host: 127.0.0.1 dbname: workets_dev user: root password:
Mon fichier de test :
<?php class CompteControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { public function setUp() { $this->bootstrap = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.yaml'); parent::setUp(); } public function testRegistrationContainForms() { $this->dispatch('/compte/inscription-etudiant'); $this->assertAction('inscription-etudiant'); $this->assertQueryCount('form#inscription-etudiant', 1); $this->dispatch('/compte/inscription-entreprise'); $this->assertAction('inscription-entreprise'); $this->assertQueryCount('form#inscription-entreprise', 1); } public function testLoginContainForm() { $this->dispatch('/compte/connexion'); $this->assertAction('connexion'); $this->assertQueryCount('form#connexion', 1); } public function testAuthenticateWithValidData() { // Logiquement, il devrait y avoir deux "comptes" créées par défaut dans la base : // - exemple_etudiant@exemple.com (mdp : azerty) // - exemple_entreprise@exemple.com (mdp : azerty) $this->getRequest()->setMethod('POST') ->setPost(array('email' => 'mic.gallego@gmail.com', 'password' => 'azerty')); $this->dispatch('/compte/connexion'); $this->assertAction('connexion'); $this->assertRedirectTo('/index/index'); }
Mon Bootstrap de test :
<?php // Définit le chemin vers le dossier de l'application defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Définit l'environnement de l'application define('APPLICATION_ENV', 'testing'); // S'assure que les bibliothèques sont dans le chemin d'inclusion set_include_path(implode(PATH_SEPARATOR, array(realpath(APPLICATION_PATH . '/../library'), get_include_path()))); require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance();
Si vous voyez d'où ça peut venir ...
Je précise que Doctrine fonctionne très bien hors test.
Hors ligne