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の側で再スローされていないスローされ、コントローラプロセス(サーバー)にとらわれない
'log/test.log'を見て、珍しいものがあるかどうか確認しましたか? – zetetic
それを考え出した。それは基本的なAdminControllerのbefore_filterが原因で、要件が満たされておらず、名前空間とは関係がありませんでした。 – afex
あなたはそれを回答として投稿し、それを受け入れることができます。それは私を助けた:) – corroded