Тестирование консольных команд Symfony2, ожидающих ввода

Я пытаюсь проверить мою команду Symfony2 Console с помощью phpunit.

Я слежу за кулинарной статьей Symfony2 на эту тему:
http://symfony.com/doc/current/components/console/helpers/questionhelper.html#testing-a-command-that-expects-input

Однако, если я не могу предоставить ввод (тест не пройден), тогда phpunit просто сидит и ничего не ждет, ожидая ввода. Вот пример:

// MyCommand.php
class MyCommand extends Command {
// ... configure()

protected function execute(InputInterface $input, OutputInterface $output) {
$qh = $this->getHelper('question');
$q1 = new ConfirmationQuestion('First question, yes or no?', false);
$qh->ask($input, $output, $q);
$q2 = new ConfirmationQuestion('Second question, yes or no?', false);
$qh->ask($input, $output, $q);
}
}

// MyCommandTest.php
class MyCommandTest extends \PHPUnit_Framework_TestCase {
// ... getInputstream()

public function testExecute() {
$app = new Application();
$app->add(new MyCommand());

$cmd = $app->find('askquestions');
$cmdTester = new CommandTester($cmd);

$helper = $cmd->getHelper('question');
$helper->setInputStream($this->getInputStream('y\\n')); // this should be yy\\n

$cmdTester->execute([
'command' => $cmd->getName(),
]);
}
}

Обратите внимание, что я намеренно сделал свой тест некорректным, он только дает ответ на вопрос 1. С тех пор, как я написал этот тест, я с тех пор добавил q2, но забыл изменить свои тесты. Будучи хорошим программистом, я запускаю phpunit, чтобы увидеть, есть ли проблемы, но phpunit зависает, ожидая ввода от q2!

Как мне сделать так, чтобы мой тест игнорировал любые дальнейшие запросы на ввод, не выполнялся, если он сталкивался с одним, и продолжал работать с другими тестами?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]