如何在PHPUnit中测试STDIN

如何在PHPUnit中测试STDIN,php,testing,tdd,phpunit,bdd,Php,Testing,Tdd,Phpunit,Bdd,我有一个reader类,它从stdin读取数据并返回读取的值 class Reader { const STREAM_READ = 'php://stdin'; private $_streamHandle; public function __construct($stream = self::STREAM_READ) { $this->_streamHandle = fopen($stream, 'r'); } p

我有一个reader类,它从stdin读取数据并返回读取的值

class Reader 
{
    const STREAM_READ = 'php://stdin';

    private $_streamHandle;

    public function __construct($stream = self::STREAM_READ)
    {
        $this->_streamHandle = fopen($stream, 'r');
    }

    public function getReadedValue()
    {
        $value = trim(fgets($this->_streamHandle));

        return $value;
    }

    public function __destruct()
    {
        fclose($this->_streamHandle);
    }
}
现在是我的问题,我如何测试这个类,从stdin中读取一些内容并通过
getReadedValue()
函数返回读取的值?

您测试读取器,而不是stdin是否工作


因为您测试单元(读卡器),所以文件名是什么并不重要,因为它只是可选的。您可以插入一些不同的内容,例如临时文件的文件名。

使用命令行执行脚本PHPUnit有一个名为vfstream的文件系统模拟扩展名,我认为这可能会有所帮助,但文档没有说明,所以可能没有。也许值得一试?在GitHub上。或者,这里有一个相关的QA,可能值得一读:好的,你知道如何测试STDIN是默认流吗?