Команда тестирования Symfony 4 с выводом из прослушивателя команд - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть прослушиватель команд, который выводит некоторый текст в командную строку.

class CommandListener
{
    //...
    public function onConsoleCommand(ConsoleCommandEvent $event)
    {
        //...

        $event->getOutput()->writeln(
            sprintf(
                '<info>%s@%s:</info> ', 
                $user->getUsername(), 
                $connection
            )
        );
    }
}

Хотя эта команда выдает ожидаемый результат при запуске команды в консоли, в тесте это не так.

class CommandListenerTest extends WebTestCase
{
    /** @test **/
    public function listener_adds_parameter_and_description_to_allowed_commands(): void
    {
        $kernel = static::createKernel();
        $application = new Application($kernel);
        $application->setAutoExit(false);

        $command = $application->find('doctrine:database:drop');
        $commandTester = new CommandTester($command);

        $commandTester->execute([
            'command'  => $command->getName(),
            '--help' => true
        ]);

        $this->assertContains('default', $commandTester->getDisplay()));
    }
}

В тесте он обеспечивает вывод без вывода из прослушивателя команд.Слушатель команды вызывается.

...