2012-10-23 48 views
8

我只是爲傳統的Rails應用程序構建測試套件。 simplecov寶石非常適合尋找需要測試覆蓋的應用程序的黑暗角落(或可能完全未使用並可以移除的應用程序)。我調用simplecov只需通過包括的test/test_helper.rb頂部以下內容:如何測試Rails ERB模板的代碼覆蓋率?

require 'simplecov' 
SimpleCov.start('rails') 

的問題是,這並不檢查所有被嵌入在模板中的代碼。那裏有各種各樣的垃圾,我相信很多垃圾可以被刪除,但如果一個代碼覆蓋工具可以指向未使用的位,這將非常好。

一些實驗用Ruby 1.9的Coverage庫使我相信它只能做的工作是在模板不知何故預編譯Ruby代碼,保存在Ruby源文件,然後load編輯或require d,而不是直接使用eval加載已編譯的模板。或者,在編譯過程中,可能會破解ERB以向每個模板的每一行添加日誌記錄語句。

有沒有人有任何其他想法如何衡量ERB模板的代碼覆蓋率?你知道一個可以做到這一點的已經制作好的工具嗎? (或者我將不得不建立和釋放它的人嗎?)

回答

8

見的部分覆蓋表: How do I get coverage for view specs with rspec, rails, and simplecov?

答案存在,你不能:

https://github.com/colszowka/simplecov/issues/38

這是我希望有人會解決這個嚴重缺陷。 AFIK沒有什麼比Ruby 1.9的simplecov更好的了

+1

好的。謝謝。我會接受這個答案......但後來我想我可能只需要自己爲這個問題創建一個解決方案,如果我這樣做了,那將會成爲公認的答案。 –

-2

嘗試耙統計

它會生成具有每個應用程序

+0

我試過了。它似乎沒有工作。 –

+0

什麼是您的Rails版本..它在Rails 3.2.3上工作得很好...嘗試運行耙 - T並讀出其中列出的任務的描述... –

+1

我不想知道*如何我的模板中有許多*代碼行。我想知道有多少行是由我的測試套件*執行的。請仔細閱讀問題。 –