2013-06-26 20 views
0

我是新來的測試驅動的開發(和相當新的Rails)的概念。我堅持要如何爲我的應用程序編寫測試。編寫一個測試,涉及到多個關聯一個Rails 3模型方法

作爲背景資料,Web應用程序是同行評價工具,其中個人組被分派在那裏他們被要求評估他們的同齡人的調查。因此,一個樣品的問題是這樣的:

Rate your peers on time management. 
- Peer 1: __ 
- Peer 2: __ 
- Yourself: __ 

我怎麼有這樣的設置在內部是這樣:

我有一個Survey模型與has_many聯想到Assignment模型(它控制的可視性組間調查),其作爲SurveyGroup模型的加入模型。在Group模型中,存在has_manyUser的關聯。

由於多個組可以分配相同的調查,我必須找出哪些Group某個用戶被要求評價。 (因此,調查結果將是相同的,但上面示例中顯示的人員會因用戶而異)。

我決定創建一個方法,assignees_for_user(user),它基本上會返回已分配給調查的用戶組。

我希望能夠單元測試這種方法。我目前使用rspec和factory_girl。我有幾個問題:

  1. 我的方法甚至是正確的設計?
  2. 我應該測試一下嗎?如果是這樣,我需要爲AssignmentGroupUser創建實例,對不對?
  3. 什麼是我可以存根/嘲笑這種情況下沒有堅持他們到數據庫的最好方法?或者我必須?

謝謝!

回答

0

這個答案是比我預想的更復雜(說實話,我想這就是爲什麼沒有人回答了這個問題:P)

您可以使用像摩卡框架來模擬之類的發現:How to test ActiveRecord witout Rails?

我結束了使用rr。但是當談到主動記錄關聯時,我仍然沒有找到一個好辦法,因爲我沒有完全理解ActiveRecord關聯代理對象。所以我認爲我所有這一切的結果都是,坦率地說,不要浪費我的時間嘲笑協會:正如一句古老的諺語所說,你不能單元測試一些不屬於你自己的東西!