2017-01-27 3 views
0

Есть ли способ проверить внутри моего тестового класса, если определенная опция была передана в CLI phpunit, особенно опция --debug.Как получить параметры CLI phpunit внутри моего тестового класса

Причина этого заключается в том, чтобы создать ядро ​​symfony с включенным режимом отладки или нет.

public function setUp() 
{ 
    self::bootKernel(["debug" => true|false]); 
} 

ответ

0

Я решил свою проблему с помощью $_SERVER['argv']

Я нашел это решение внутри Symfony кода базы KernelTestCase::getPhpUnitCliConfigArgument

/** 
* Finds the value of the CLI configuration option. 
* 
* PHPUnit will use the last configuration argument on the command line, so this only returns 
* the last configuration argument. 
* 
* @return string The value of the PHPUnit CLI configuration option 
*/ 
private static function getPhpUnitCliConfigArgument() 
{ 
    $dir = null; 
    $reversedArgs = array_reverse($_SERVER['argv']); 
    foreach ($reversedArgs as $argIndex => $testArg) { 
     if (preg_match('/^-[^ \-]*c$/', $testArg) || $testArg === '--configuration') { 
      $dir = realpath($reversedArgs[$argIndex - 1]); 
      break; 
     } elseif (0 === strpos($testArg, '--configuration=')) { 
      $argPath = substr($testArg, strlen('--configuration=')); 
      $dir = realpath($argPath); 
      break; 
     } elseif (0 === strpos($testArg, '-c')) { 
      $argPath = substr($testArg, strlen('-c')); 
      $dir = realpath($argPath); 
      break; 
     } 
    } 

    return $dir; 
}