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