2011-08-06 23 views
3

我正在用Ruby編寫一個命令行應用程序。我對Rspec 2非常熟悉,因爲它在我正在使用的一些Rails應用程序中使用。我正在編寫一個命令行應用程序,我試圖使用Rspec 2來處理BDD。使用Rspec 2來測試命令行應用程序的UI層

如何測試我的應用程序的用戶界面層?我需要給應用程序交互式輸入,或者檢查使用puts打印的某些輸出。另外,是否有任何方法來抑制STDOUT輸出?當我運行自動測試時,我的應用程序的輸出會打印在rspec的狀態輸出之間,這使得它非常難以閱讀。

回答

9

下面是一個應該幫助你的例子。我在我使用Minitest測試的其中一個應用程序中使用它,但應該很容易將其轉換爲Rspec。

def setup 
    $stdout = StringIO.new 
    ... 
end 

它被作爲測試結果之間擺脫了應用程序的輸出,因爲標準輸出將被寫入到StringIO對象。你也可以測試是否有特定的輸出,因爲你可以用正則表達式來檢查StringIO對象。

+0

這正是我需要的!謝謝。 – sensae

相關問題