2010-10-11 40 views
2

,你怎麼能單元測試腳本的功能,而不運行腳本本身? Here是一個示例腳本,而here是它的單元測試。如何單元以Ruby腳本的測試功能,而無需運行考慮了一堆的功能Ruby腳本腳本

例如,使用要求或在我的單元測試負載導致腳本測試執行之前執行。我有很多這些腳本,我真的更喜歡他們保持不變。

我想我可以將文件加載一個字符串,在內存和運行EVAL砍它了 - 如果可行的話,這種感覺就像一個可怕的解決方案。

任何想法或建議的策略將不勝感激。

回答

8

通常你把最後幾行實際運行腳本後衛裏面是這樣的:

if $0 == __FILE__ 
    # do stuff 
end 

也就是說,如果第一個參數是這個文件,那麼它正在運行一個腳本, 「東西」將被執行;否則只會加載方法定義。

+0

很好的建議,雖然我試圖避免這些行添加到腳本/ s的展示目的 - 我使用的腳本作爲學習輔助(AI不是紅寶石)。 – jasonb 2010-10-12 01:18:09

1

我喜歡做的是限制可執行的部分比一個對象的實例而已,甚至只是一個類的方法調用(可能通過CMD線參數)。然後編寫一個或一系列將由腳本調用的類方法,但可以分別單獨進行測試。

這可以很容易地TDD,更容易在其他地方重用。