2011-01-15 5 views
3

rails 3管理コントローラのテストに問題があります。コントローラーの動作が呼び出されていないように見えます。私は、アクションを明示的に例外をスローすることによってこれをテストしましたが、テストではこの事実が示されていません。rspecがネームスペースのレール3コントローラでカスタムアクションを呼び出さないのですか?

次のコードで、私のテストに合格します。 my_custom_actionが実際に呼び出された場合は例外が発生してテストが失敗するはずです。

コントローラ/管理/ things_controller.rb

class Admin::ThingsController < Admin::AdminController 
    def my_custom_action 
    raise 'this should be bad' 
    end 
end 

スペック/コントローラ/管理/ things_controller_spec.rb

describe Admin::ThingsController do 
    it "shouldn't work!" do 
    post :my_custom_action 
    end 
end 

のconfig/routes.rbを

namespace :admin do 
    resources :things do 
    post :my_custom_action, :on => :collection 
    end 
end 

私が削除したときにルートが "no matching route"エラーで失敗したので、私はなぜそれがどうなるのか混乱していますteは定義されているアクションは呼び出されていません

rspec経由でnamespace'dルートをテストするために何が欠けていますか?通常、あなたが応答をチェックする必要があり、デフォルトでRSpecの側で再スローされていないスローされ、コントローラプロセス(サーバー)にとらわれない

+0

'log/test.log'を見て、珍しいものがあるかどうか確認しましたか? – zetetic

+1

それを考え出した。それは基本的なAdminControllerのbefore_filterが原因で、要件が満たされておらず、名前空間とは関係がありませんでした。 – afex

+2

あなたはそれを回答として投稿し、それを受け入れることができます。それは私を助けた:) – corroded

答えて

0

例外(つまり、その場合には200 OKではありません):

post :something_wrong 
response.should be_ok 
関連する問題