究竟是什麼問題?如何設置關係的基本測試或如何測試current_user的管理?
對此的基本測試應該在Model Specs中,因爲這是模型的工作來梳理這些事情。
我通常測試它是這樣的:
1)限定的固定裝置(或交替地使用兩個用戶和一些資產(3在這個例子中)類似FactoryGirl)。對於用戶資產被命名爲asset_a_ *,這些用戶B asset_b_ *)
2)測試僅僅是這樣的:
users(:users_a).assets.should have(3).records
users(:users_a).assets.should include(assets(:asset_a_a))
users(:users_a).assets.should include(assets(:assets_a_b))
users(:users_a).assets.should include(assets(:assets_a_c))
您可以微調這個喜歡 用戶(:users_a).assets。查找(資產(:asset_a_a).id)。應包括(assets(:asset_a_a)) users(:users_a).assets.find(assets(:asset_a_a).id).should_not include(assets(:asset_b_a))
如果您絕對想要,可以對控制器部件使用類似的測試。
雖然有相當多的討論,如果這些基本功能需要測試,因爲它主要是核心Rails功能來處理您在您的模型中定義的關聯。
我個人做這種測試的原因有些。在許多情況下,這種許可相關的協會很快變得更加複雜,無論如何都需要詳細的測試或者有人可能會改變關聯的參數並破壞某些東西。
II - 關於控制器內的current_user部分。
這當然取決於您如何處理身份驗證開始。如果你使用像AuthLogic這樣的插件(或其他),它可能有一些方法允許在rspec中模擬登錄。對於authlogic,你可以這樣做:
before(:each) do
activate_authlogic
UserSession.create(users(:user_a))
end
這將激活authlogic和'login'user_a。 然後你運行你的控制器
get :index
response.should be_success
response.should render_template :index
assigns(:assets).should # => more or less as above, check that there are the right aessets.
我也使用factoryGirl/Devise,但我還沒有定義任何工廠。該工廠應該是什麼樣子?我已將控制器重命名爲TemplatesController – RubyNerd 2012-03-30 14:04:29
我使用索引函數。對於演出功能來說,它幾乎是一回事嗎? – RubyNerd 2012-03-30 17:26:42
只是一個筆記...測試通過只是把分配(:資產)...如果我把分配(:資產)。應該(QQ)(@assets)它失敗 – RubyNerd 2012-03-30 17:42:30