Как проверить консольный ввод с помощью PHPUnit (функция readline) - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю библиотеку и хочу протестировать систему, которая запрашивает пользователя путем ввода в консоли. Я использую PHPUnit в качестве библиотеки тестирования, но я не знаю, как выполнить функцию readline, а затем распечатать текст, чтобы ответить на вход, чтобы проверить его.

Вот мой тест:

$app = new Application;
$i = null;
$app->registerCommand('test', function(Input $input) use(&$i){
    // $input->getInput() asks the user and returns the value
    $i = $input->getInput();
});

$this->expectOutputString("\n");
// Run the application, so asks the user to enter a value
$app->run();
// Here, I want force to enter a value by the code
$this->assertSame($i, 'test');

Я протестировал заменить readline на fgets(STDIN), но безРезультаты. Я решил решить проблему с асинхронными вызовами, но мне нужно руководство по использованию хороших библиотек.

Вот различные способы, которые я тестировал в функции getInput:

return readline();
return trim(fgets(STDIN));

Спасибо за помощь.

...