2015-09-15 83 views
1

我有一個腳本,我想在使用RSpec的一些測試中運行,我想測試輸入/輸出。命令行程序的功能測試Ruby/RSpec

例如,

我有一個腳本「script.rb」我運行使用「紅寶石script.rb」

腳本然後輸出到STDOUT和需要使用STDIN的輸入。我想用RSPec來測試它,並檢查一切正常工作(功能測試)。我會如何去做這件事?只要在RSPec中執行'ruby script.rb',然後測試輸出是我期望的結果,並且它需要STDIN的輸入?

回答

0

由於您想將腳本測試爲黑盒子(僅STDIN/STDOUT),因此您可以通過system()調用完成:只需確保清除腳本將要離開的所有副作用(例如,臨時文件)。

編輯:只需創建一些文件,其中包含所需的內容,如stdin.txt

這之後你可能會遇到你的命令是這樣的:

system('cat stdin.txt | ruby myscript.rb') 
+0

ok了,有沒有辦法僞造標準輸入得到調用腳本,所以我不必須手動有測試者輸入的東西嗎?類似於web請求中的水豚的fill_in方法 – noname