2012-06-03 67 views
0

我正在編寫命令行命令,但想要TDD它。我將創建和刪除文件,並想知道是否有沙盒測試寶石或類似的東西。我使用ruby和rspec。TDD'ing命令行應用程序存在沙箱測試環境

+0

是什麼讓你說你不能使用rspec的爲你的命令行應用程序? –

+0

對不起,我急着寫了我的問題。我的意思是要求任何TDD的SANDBOX環境。改變我的問題。抱歉。 – Brand

+0

不確定你正在尋找什麼 - 「沙盒寶石」會爲你提供什麼? Yu已經可以讀/寫文件了。 –

回答

2

取決於你想要做什麼,但我通過嘲笑文件系統和STDIN/STDOUT來測試我的大部分命令行Ruby。使用依賴注入我常常落得沿着這些路線的東西:

describe Add do 
    it 'writes the result to standard out' do 
    console = mock('STDOUT') 
    console.should_receive(:puts).with('5') 

    Add.new(console).execute(3,2) 
    end 
end 

class Add 
    def initialize(out = STDOUT) 
    @out = out 
    end 

    def execute(command_line_args) 
    @out.puts(command_line_args.inject(:+)) 
    end 
end 

Add.new.execute(ARGS) 

通過使用默認值,我可以在測試中注入,但離開它的生產代碼。

希望有幫助!

布蘭登

0

newgeminstall_cucumber發生器產生的模板使用,我想了不少的模式。看一看支持/ env.rb和支持/ common.rb文件,它會創建:

測試中使用它看起來像這樣:

in_tmp_folder do 
    # The current directory is now a generated tmp folder. 
    # If you stick to relative paths, everything you do in here should be safe 
end 

上面鏈接的文件是爲了在黃瓜測試中使用它,但它可以很容易地適應你正在使用的任何框架。上面的env.rb在每次測試開始前刪除tmp文件夾。