2013-04-11 7 views
8

stdinから読み込んだ値を返すreaderクラスがあります。PHPUnitでの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); 
    } 
} 

今、私の質問は、私は標準入力から何かを読んで、このクラスをテストし、getReadedValue()機能によってreaded値を返すことができるか、でしょうか?

+0

コマンドラインでthスクリプトを実行 –

+0

vfsStreamと呼ばれるPHPUnit用の拡張ファイルシステムがありますが、これは助かりましたが、ドキュメントには何も言われていない可能性があります。しかし、おそらく一桁の価値がある?それはGitHubにあります。代わりにここでは、読んでみる価値のある関連するQAがあります:http://stackoverflow.com/questions/9158155/how-to-write-unit-tests-for-interactive-console-app –

答えて

1

リーダーをテストします.STDINが機能しているかどうかはテストしません。

ユニット(リーダー)をテストするので、そのファイル名は何もオプションではないので重要ではありません。一時ファイルのファイル名など、別のものを注入することができます。

+0

良い点、それをテストする方法STDINはデフォルトのストリームですか? – nickel715

関連する問題