Php 运行Symfony2命令测试时,如何设置命令行标志?

Php 运行Symfony2命令测试时,如何设置命令行标志?,php,testing,symfony,Php,Testing,Symfony,我有一个运行Symfony 2.0命令的测试。在测试中,我运行如下命令: $application = new Application(static::$kernel); $application->add(new MyCommand()); $command = $application->find('mycommand:name'); $commandTester = new CommandTester($command); $commandTester->execute

我有一个运行Symfony 2.0命令的测试。在测试中,我运行如下命令:

$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 debug标志运行该命令,这是app:console的内置标志(我想是吧?)。我试过:

$commandTester->execute(array('command' => $command->getName(), '--no-debug' => true));
我也试过:

$application->run(new StringInput('mycommand:name --no-debug'));

正如建议的那样。我也尝试过其他的排列方式。但是它们都没有做我想做的事情,也就是关闭日志中的所有调试消息。有没有办法在测试中实现我想要的功能?

在内核中禁用调试

您可以在测试的setUp()方法中将debug设置为false来初始化内核

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class YourCommandTest extends WebTestCase
{

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

      // ...
   }
看一看

使用环境

如果不希望调试输出出现在日志中,请编辑/创建
app/config/config_test.yml
并编辑

monolog:
    handlers:
        file:
           type: stream
            level: debug       # log-level ...   
。。。给另一个适合你的人


然后使用测试环境执行命令,并带有
--env=test

--no debug
明显禁用显示错误的调试模式。尝试在测试环境中使用
--env=test

运行命令,上面写着“除了更改环境外,您还可以选择禁用调试模式。如果您希望在开发环境中运行命令,但避免收集调试数据对性能的影响,这可能会很有用:
$php应用程序/控制台列表--无调试
”根据我的经验,当我从命令行运行调试时,--no debug标志会关闭调试。我确实知道如何在配置文件中设置日志级别,但我只想关闭此特定测试的调试,而不是所有测试。好的一点,在测试中不进行调试的情况下初始化内核如何$内核=新的AppKernel('test',false);