2010-10-20 2 views
4

Je tente de créer un test unitaire pour mon application dans Symfony.Test de l'unité Symfony Ne chargez pas les globes app_

Mon /config/app.yml ressemble à ceci:

dans le test unitaire
all: 
    tmp_dir: "tmp" 

    # usps 
    usps_username: xxxxx 
    usps_password: xxxxx 
    usps_dir: usps 

, quand je lance quelque chose comme:

$t->comment(sfConfig::get('app_usps_username')); 

Il sera ligne juste sortie et vide. Que se passe-t-il? Comment puis-je accéder à ces valeurs depuis app.yml depuis le test unitaire? Si je tente d'accéder aux valeurs d'ailleurs, cela fonctionne comme prévu.

Répondre

5

Comme il s'agit d'un test unitaire, la configuration n'est pas initialisée. Ce ne serait pas vraiment un test unitaire si tout le framework était chargé par défaut.

Si vous comptez sur les options de configuration que de les définir explicitement dans votre test:

sfConfig::set('usps_username', 'my username'); 

Avec des tests fonctionnels, il est un peu différent que l'application entière est et vous pouvez la méthode bootstrap facilement accéder à votre configuration.

Edit:

Si vous jetez un oeil à votre répertoire de cache, vous verrez que toutes les configurations sont générées dans le répertoire (cache/frontend/test/config/config_app.yml.php) de l'application. Si vous le mettez dans le fichier principal config/app.yml, c'est juste que toutes les applications héritent de ces valeurs. Encore vous devez exécuter votre script dans le contexte d'une application pour les utiliser. En d'autres termes: cela devrait être possible, mais vous devrez initialiser la configuration de l'application appropriée au lieu de la configuration du projet (donc frontendConfiguration au lieu de ProjectConfiguration dans votre bootstrap).

Cependant, je pense que c'est une bonne pratique de garder les tests unitaires aussi indépendants de l'application que possible.

+0

J'ai vérifié le fichier bootstrap.php et (en mémoire), il semblait qu'il faisait * quelque chose * avec le dossier config. N'y a-t-il aucun moyen de l'amener à charger ces valeurs? – gregghz

+0

merci, j'aime votre solution de contournement avec le cache-répertoire, comme vous trouvez leurs toutes vos commandes sfConfig :: add(), que vous pouvez simplement copier à votre test. – Tapper

Questions connexes