2013-06-18 80 views
1

我有一個運行Symfony 2.0命令的測試。在測試中,我運行的命令是這樣的:如何在運行Symfony2命令測試時設置命令行標誌?

$application = new Application(static::$kernel); 
$application->add(new MyCommand()); 

$command = $application->find('mycommand:name'); 
$commandTester = new CommandTester($command); 
$commandTester->execute(array('command' => $command->getName())); 

我想運行與--no-調試標誌,這是一個內置的標誌,該應用程序的命令:(?我猜)控制檯。我已經試過:

$commandTester->execute(array('command' => $command->getName(), '--no-debug' => true)); 

,我也試過:

​​

的建議here。我也嘗試過其他一些排列。但是他們都沒有做我想做的事情,這是關閉日誌中的所有調試消息。有沒有辦法做到我想要的測試?

回答

2

禁用調試內核

可以初始化在測試的設置內核()方法與調試設置爲false。

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class YourCommandTest extends WebTestCase 
{ 

    public function setUp() 
    { 
     static::$kernel = static::createKernel(array('debug' => false)); 
     static::$kernel->boot(); 

     // ... 
    } 

看看WebTestCase->createKernel()

使用enviroments

如果你不想在你的日誌調試輸出編輯/創建app/config/config_test.yml和編輯...

monolog: 
    handlers: 
     file: 
      type: stream 
      level: debug  # log-level ... 

...另一個log level適合您的需求。

然後用--env=test

+0

[手冊頁](http://symfony.com/doc/2.0/cookbook/console/usage.html)說:「除了更改環境外,還可以選擇禁用調試模式。在你希望在開發環境中運行命令的地方很有用,但避免收集調試數據的性能影響:'$ php app/console list --no-debug'。「而我的經驗正是如此,當我從命令行運行它時,--no-debug標誌關閉了調試。 我知道如何在配置文件中設置日誌級別,但我只想關閉此特定測試的調試,而不是所有測試。 – matt

+0

好點如何在你的測試中初始化內核而不用調試? $ kernel = new AppKernel('test',false); – nifr

+0

更新了我的答案 – nifr

0

--no-debug明顯禁用調試模式,顯示錯誤執行使用測試環境的命令。嘗試在--env=test的測試環境中運行命令。