2011-08-21 131 views
5

我想知道我是否可以在rails控制檯而不是命令行下運行我的測試。 其實這樣做的基本原理是rake測試:命令行上的單位需要很長時間來加載rails環境。所以我想,爲什麼不啓動一個控制檯來加載一次環境,然後繼續運行rake unit:每次我想檢查我的代碼時進行測試。畢竟,rails意味着敏捷並促進敏捷開發。所以我嘗試了這個。首先,我不得不說:Rails控制檯和耙測試:單位

irb(main):002:0> Rake::Task['test.units'].invoke 
RuntimeError: Don't know how to build task 'test.units' 

我想我需要以某種方式告訴它到哪裏尋找:

需要「佣金」

但即使這樣做,我得到了錯誤消息後。有什麼想法嗎?

感謝

克里斯

回答

5
ruby-1.9.2-p290 :001 > require 'rake' 
ruby-1.9.2-p290 :002 > r = Rake.application 
ruby-1.9.2-p290 :003 > r.init 
ruby-1.9.2-p290 :004 > r.load_rakefile 
ruby-1.9.2-p290 :005 > r['test:units'].invoke 
+1

謝謝,它第一次工作(但實際上仍然需要很長時間才能運行),然後當我嘗試運行r ['test:units']時返回nil,再次調用。我想我會看看Spork。 – Chris

+1

實際上,添加r.clear允許我重複r.load_rakefile和r ['test:units']。再次調用。在我的計算機上運行此操作的時間從80秒(在命令行上耙動)減少到25秒,因此有顯着的改善,但仍然很慢。 – Chris

0

一個更好的想法是使用叉勺不斷加載的環境,然後自動測試文件時改變自動運行測試。

+0

是的,我認爲這是要走的路。但是,我在一個小型的uni模塊中使用RoR,並且不想談論rspec和Agile Software with Rails書中未涉及的其他內容。我不知道是否核心軌道捆綁應該切換到spork等。它似乎有點奇怪,它仍然包括對於TDD來說太慢的測試技術。 – Chris