2016-03-31 2 views
1

Voici mon fichier phpunit.xmlPHPUnit et Symfony2 ne peuvent pas accéder aux variables globales

<?xml version="1.0" encoding="UTF-8"?> 

<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html --> 
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd" 
     backupGlobals="false" 
     backupStaticAttributes="false" 
     processIsolation="false" 
     colors="true" 
     stopOnFailure="false" 
     syntaxCheck="false" 
     bootstrap="bootstrap.php.cache" 
     convertErrorsToExceptions="true" 
     convertNoticesToExceptions="true" 
     convertWarningsToExceptions="true" 
> 
    <testsuites> 
     <testsuite name="Project Test Suite"> 
      <directory>../src/*/*Bundle/Tests</directory> 
      <directory>../src/*/Bundle/*Bundle/Tests</directory> 
      <directory>../src/*Bundle/Tests</directory> 
     </testsuite> 
    </testsuites> 

    <php> 
     <server name="KERNEL_DIR" value="./" /> 
     <var name="DB_DSN" value="mysql:dbname=test_xxx;host=localhost" /> 
     <var name="DB_USER" value="root" /> 
     <var name="DB_PASSWD" value="" /> 
     <var name="DB_DBNAME" value="test_xxx" /> 
    </php> 


    <logging> 
     <log type="coverage-html" target="build/coverage" title="App Code Coverage" charset="UTF-8" yui="true" highlight="true" 
     lowUpperBound="35" highLowerBound="70"/> 
     <log type="coverage-clover" target="build/logs/clover.xml"/> 
     <log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/> 
    </logging> 

    <filter> 
     <whitelist> 
      <directory>../src</directory> 
      <exclude> 
       <directory>../src/*Bundle/Resources</directory> 
       <directory>../src/*Bundle/Tests</directory> 
       <directory>../src/*/*Bundle/Resources</directory> 
       <directory>../src/*/*Bundle/Tests</directory> 
       <directory>../src/*/Bundle/*Bundle/Resources</directory> 
       <directory>../src/*/Bundle/*Bundle/Tests</directory> 
      </exclude> 
     </whitelist> 
    </filter> 
</phpunit> 

Dans mon:

  • src
    • AppBundle
      • Tests
        • AbstractDatabaseTestCase.php

AbstractDatabaseTestCase.php:

abstract class AbstractDatabaseTestCase extends \PHPUnit_Extensions_Database_TestCase{ 

    /** 
    * 
    *@var PDO 
    * 
    */ 
    static $pdo; 

    /** 
    * 
    *@var \Doctrine\DBAL\Connection description 
    * 
    */ 
    static $dbal; 

    private $conn; 

    final public function getConnection() 
    { 
     var_dump($GLOBALS); 
// here my GLOBALS['DB_DSN'], GLOBALS['DB_USER'], GLOBALS['DB_PASSWD'] are not seen. 

     if ($this->conn === null) { 
      if (self::$pdo == null) { 
       self::$pdo = new \PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']); 
      } 
      $this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']); 
     } 

     return $this->conn; 
    } 

Comme vous pouvez le voir dans les commentaires, compte tenu du fait que je suivais la documentation, ma classe ne semble pas voir les globals définis dans le fichier phpunit.xml.

Avez-vous des idées? Ai-je manqué quelque chose?

Merci!

+0

Avez-vous vérifié $ _SERVER? –

+0

@RenatoMendesFigueiredo Il a fait de même pour toutes les variables, maintenant donné qu'il m'a conduit à la réponse ci-dessous, merci! – Gabriel

Répondre

0

Dans symfony2, le fichier phpunit.xml par défaut n'est pas celui de l'application/phpunit.xml mais celui de la racine de l'application. Mettez toutes les valeurs là-bas et tout a bien fonctionné.