2013-04-11 10 views
8

में STDIN का परीक्षण कैसे करें मेरे पास पाठक वर्ग है जो stdin से पढ़ता है और पढ़े गए मान को वापस करता है।PHPUnit

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() समारोह द्वारा readed मूल्य लौट सकते हैं?

+0

कमांड लाइन –

+0

के साथ वें स्क्रिप्ट निष्पादित करें PHPUnit के लिए एक फाइल सिस्टम मॉकिंग एक्सटेंशन है जिसे vfsStream कहा जाता है, जिसे मैंने सोचा था लेकिन दस्तावेज़ कुछ भी नहीं कहेंगे, शायद नहीं। शायद एक खुदाई के लायक है? यह गिटहब पर है। वैकल्पिक रूप से यहां एक संबंधित क्यूए है जो पढ़ने योग्य हो सकता है: http://stackoverflow.com/questions/9158155/how-to-write-unit-tests-for-interactive-console-app –

उत्तर

1

आप रीडर का परीक्षण करते हैं, भले ही एसटीडीआईएन काम कर रहा हो या नहीं।

क्योंकि आप इकाई (रीडर) का परीक्षण करते हैं, यह महत्वपूर्ण नहीं है कि फ़ाइल नाम केवल वैकल्पिक है। आप कुछ अलग इंजेक्ट कर सकते हैं, उदाहरण के लिए एक अस्थायी फ़ाइल का फ़ाइल नाम।

+0

अच्छा बिंदु, किसी भी विचार का परीक्षण कैसे करें एसटीडीआईएन डिफ़ॉल्ट धारा है? – nickel715