2011-05-01 98 views
4

一個測試模型在軌道上應該多少或多少?由於框架基本上爲您做了很多工作,我想知道是否值得測試生成的activerecord方法以確保它們正常工作。在Rails中測試模型的最佳實踐是什麼?

你們是否通過控制器隱式測試它們?

在Java世界中,如果我使用Hibernate,我必須編寫如此多的ORM映射東西,測試每個實體的保存/刪除/查找是非常重要的 - 即使我只是從基類繼承這些方法 - 因爲很容易得到錯誤的映射信息,或者犯一個愚蠢的錯誤。刪除對測試非常重要,以確保Hibernate能夠正常級聯。

但是既然你沒有在rails中配置任何這些東西......它就是這麼簡單......是值得測試的,還是你認爲它的工作原理?你是否僅僅限制自己,以確保協會按預期工作?

最佳做法是什麼?任何好的測試例子?我在這裏找到了一個頁面: http://guides.rubyonrails.org/testing.html

但它並沒有專門討論ActiveRecord。它更側重於控制器和其他東西。

謝謝!

回答

6

我不嘗試測試通過活動記錄和介紹等任何方法。他們已經由鐵路團隊進行了測試。他們已經寫了測試用例。

但我會測試我所有的方法和基本上我寫在我的模型中的任何自定義代碼。首先要測試它們作爲單個單位,我將使用單元測試。並確保整個工作(模型controllers..etc),你可以使用集成測試。

railsguides將是一個非常好的起點給你。之後你可以挖掘更有趣的東西。我建議你去看一下rspec和黃瓜。

一些更計算器問題(和答案),這將有助於你

+0

謝謝!我對測試很熟悉 - 在過去的幾年裏,我可能已經寫了10,000次測試;)我對Ruby和Rails只是新手。很多地方都將注意力放在框架上,而不是測試實踐上。我一定會繼續閱讀。也許我會找到一個好的rails應用程序,我可以下載並看看他們的測試。 – egervari 2011-05-01 01:50:28

+0

爲什麼不看自己的軌道;) – thekindofme 2011-05-01 01:54:39

+0

哦,這不是我不知道如何測試一般,我的意思是什麼是從什麼是沒有意義的。在java世界中,測試你的保存/刪除/查找實際上是非常有意義和有價值的,因爲如果你不測試它會導致錯誤......但是我在rails中猜測它不是。此外,測試控制器可能具有與Spring MVC截然不同的細微差別 - 儘管概念是相同的。它只是在真正瞭解差異。但在進入控制器之前,我想先與模型合作。 – egervari 2011-05-01 02:03:14

5

不,這不是一個好主意,測試活動記錄,它已經被廣泛測試,所以你只會浪費你的時間在那裏。

你應該測試你寫的任何東西。應該測試任何你編碼的模型方法。也就是說,不要測試活動記錄刪除方法是否有效,但是如果你的程序的實現工作正常(比如用戶點擊刪除並且他擁有該項目,它將被刪除)。測試行爲,而不是做它的手段。

看看這個非常好的投上測試控制器與rspec的:

http://railscasts.com/episodes/71-testing-controllers-with-rspec

你提到的資源可能是最好的,以及:)如果你有興趣在RSpec中,你會發現一些很漂亮的信息在這裏:

http://rspec.info/

相關問題