【问题标题】:How test STDIN in PHPUnit如何在 PHPUnit 中测试 STDIN
【发布时间】:2013-04-04 03:57:06
【问题描述】:

我有从标准输入读取并返回读取值的阅读器类。

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);
    }
}

现在是我的问题,我如何测试这个类,从标准输入读取内容并通过getReadedValue() 函数返回读取的值?

【问题讨论】:

  • 用命令行执行脚本
  • PHPUnit 有一个名为 vfsStream 的文件系统模拟扩展,我认为这可能会有所帮助,但文档什么也没说,所以可能没有。也许值得一试?它在 GitHub 上。或者,这里有一个可能值得一读的相关 QA:stackoverflow.com/questions/9158155/…

标签: php testing tdd phpunit bdd


【解决方案1】:

您测试的是 Reader,而不是 STDIN 是否正常工作。

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

【讨论】:

  • 好点,知道如何测试 STDIN 是默认流吗?
猜你喜欢
  • 2018-04-24
  • 2014-06-14
  • 1970-01-01
  • 2019-06-26
  • 2012-08-12
  • 2011-09-21
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多