Как в PHPUnit из теста вызвать консольную команду?

Необходимо протестировать работу консольных команд в приложении на symfony2.
То есть нужно тестом вызвать команду к примеру (php app/console router:debug ), после посмотреть ответ команды.
Каким образом заставить тест запустить команду и потом посмотреть ответ который выводится в консоль.
  • Вопрос задан
  • 433 просмотра
Пригласить эксперта
Ответы на вопрос 2
keltanas
@keltanas
Software Developer
Зачем тестировать, что выводит комманда? Ты сомневаешься в работе класса Output и хелперов?

1. Сделай тонкую консольную комманду, которая использует нужный сервис.
2. Тестируй сервис.
Ответ написан
Комментировать
exekhua
@exekhua Автор вопроса
Нашел решение:
use Asme\Command\UpdateCurrencyCommand;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\Console\Tester\CommandTester;

class UpdateCurrencyCommandTest extends WebTestCase
{

public function testUpdateCurrency()
{
$kernel = $this->createKernel();
$kernel->boot();
$application = new Application($kernel);
$application->add(new UpdateCurrencyCommand());

$command = $application->find('имя команды');
$commandTester = new CommandTester($command);
$commandTester->execute(array('command' => $command->getName()));

//проверка ответа
$this->assertNotEquals('...', $commandTester->getDisplay());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы