Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-09-2011 11:02:09

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Erreur tests unitaires et Doctrine 2

Bonjour à tous smile,

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 :

Code:

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 :

Code:

<?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 :

Code:

<?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 sad...

Je précise que Doctrine fonctionne très bien hors test.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages