3
在我的一個控制器中,我有一個相當典型的require_no_user
作爲before_filter
。如果他們嘗試訪問控制器操作的任何,我需要測試一個登錄用戶是否被該過濾器重定向。如何測試before_filter將重定向所有Rails控制器操作?
有沒有一個明智的方法來做到這一點,而不用枚舉我的測試用例中的所有控制器的動作?
我試圖避免:
context 'An authenticated user' do
setup do
activate_authlogic
@user = Factory(:user)
UserSession.create(@user)
do
should 'not be allowed to GET :new' do
get :new
assert_redirected_to(root_path)
end
should 'not be allowed to POST :create' do
# same as above
end
# Repeat for every controller action
end
謝謝,它整理了一下 - 但它仍然需要我列舉所有的行動,這會導致問題,如果我在控制器中添加新的,忘記把它們在測試中。 – nfm 2011-02-23 06:05:55
只要你定義了沒有':only'或':except'條件的過濾器,即你只是使用'before_filter:require_no_user',我就不用擔心它。 Rails核心測試負責證明'before_filter'實際上起作用。 – jemminger 2011-02-23 17:12:12
沒錯;這是一個'before_filter'。我想我很擔心一個':only'或者':except'參數被意外添加到軌道上,沒有測試用例可以解決這個問題。我是否過於肛門?我是新手,並且仍然在學習如何編寫明智的測試用例。你怎麼看? – nfm 2011-02-23 23:20:32