【发布时间】:2020-03-06 03:28:47
【问题描述】:
我正在创建一个库,我想测试一个通过控制台输入询问用户的系统。我使用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));
感谢您的帮助。
【问题讨论】:
-
无论 Application 是什么(您没有在问题中分享),它是否有任何方法可以提供输入?否则你总是需要在运行测试时手动输入一些东西,这会导致自动化测试失败......
标签: php testing input console phpunit