Я создаю библиотеку и хочу протестировать систему, которая запрашивает пользователя путем ввода в консоли. Я использую 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));
Спасибо за помощь.