У меня есть прослушиватель команд, который выводит некоторый текст в командную строку.
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()));
}
}
В тесте он обеспечивает вывод без вывода из прослушивателя команд.Слушатель команды вызывается.