मैं SF2 कमान बात से परिचित नहीं हूँ, लेकिन SF2 डॉक्स, http://symfony.com/doc/2.0/components/console.html#testing-commands
सामान्य में पर यह परीक्षण के बारे में एक उदाहरण है आप अपने कंसोल app से STDIN
और STDOUT
दसगुणा सकता है, तो आप इसे से बदल सकते हैं एक और स्ट्रीम संसाधन, जैसे fopen(php://memory)
। readline
के बजाय, आप का उपयोग
fwrite($outputStream, 'Prompt');
$line = stream_get_line($inputStream, 1024, PHP_EOL);
विचार असली कंसोल वातावरण की आवश्यकता के बिना अपने घटक परीक्षण योग्य बनाना है। इस दृष्टिकोण का उपयोग करने से आप अपने परीक्षण में किसी भी समय स्ट्रीम की सामग्री की जांच कर सकते हैं। So if you run Command "foo" in your console app and want to test that the output is "bar" you simply rewind the appropriate resource and read it's content। एक विकल्प SplTempFileObject
का उपयोग करना होगा।
class ConsoleApp
…
public function __construct($inputStream, $outputStream)
{
$this->inputStream = $inputStream;
$this->outputStream = $outputStream;
}
}
अपने असली दुनिया परिदृश्य आप
$app = new ConsoleApp(STDIN, STDOUT);
साथ लेकिन अपने परीक्षण में कंसोल अनुप्रयोग बनाएंगे में आप कर सकते हैं सेटअप अपनी पसंद की एक धारा के साथ ConsoleApp
:
public function setup()
{
$i = fopen('php://memory', 'w');
$o = fopen('php://memory', 'w');
$this->consoleApp = new ConsoleApp($i, $o);
}
आउटस्ट्रीम के लिए इस विधि का उपयोग कर यूनिटटेस्ट का एक उदाहरण
ग्रेट धन्यवाद :) – canni