Helpers
El componente Console también tiene una serie de helpers, pequeñas herramientas que pueden ayudarte en diferentes tareas:
- Question Helper: pregunta interactivamente al usuario para obtener información
- Formatter Helper: customiza el output con colores
- Progress Bar: muestra una barra de progreso
- Table: muestra datos tabulados como una tabla
Testing
Symfony proporciona varias herramientas para testear los comandos. La más útil es la clase CommandTester. Utiliza clases input y output especiales para facilitar el testing sin una consola real:
use Acme\Console\Command\GreetCommand;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Tester\CommandTester;
class ListCommandTest extends \PHPUnit_Framework_TestCase
{
public function testExecute()
{
$application = new Application();
$application->add(new GreetCommand());
$command = $application->find('demo:greet');
$commandTester = new CommandTester($command);
$commandTester->execute(array('command' => $command->getName()));
$this->assertRegExp('/.../', $commandTester->getDisplay());
// ...
}
}
El método getDisplay() devuelve lo que se hubiera mostrado durante una llamada normal en la consola.
Puedes testear enviar argumentos y opciones al comando añadiéndolos como array al método execute():
use Acme\Console\Command\GreetCommand;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Tester\CommandTester;
class ListCommandTest extends \PHPUnit_Framework_TestCase
{
// ...
public function testNameIsOutput()
{
$application = new Application();
$application->add(new GreetCommand());
$command = $application->find('demo:greet');
$commandTester = new CommandTester($command);
$commandTester->execute(array(
'command' => $command->getName(),
'name' => 'Fabien',
'--iterations' => 5,
));
$this->assertRegExp('/Fabien/', $commandTester->getDisplay());
}
}
Puedes también testear una aplicación console entera con AplicationTester.