アプリケーションのテストと開発に(gem rspec-railsを介して)RSpecを使用しています。私はコントローラーを「テスト」して、postメソッドとgetメソッドの奇妙な動作に立ち向かおうとしました(この種の他のすべてのメソッドでも同じです)。
私のルートファイル:
controller :sessions do
post '/login', action: :login_create
get '/login', action: :login
get '/logout', action: :logout
end
当初、postは指定されたURLでのhttp postリクエストをシミュレートすると考えていたので、仕様に次のように記述しました。
describe "POST 'login'" do
it "returns http success" do
post 'login'
response.should be_success
response.should render_template 'sessions/login_create'
end
end
ただし、これにより、login_createではなくログインアクションが呼び出され、最後のアサートが失敗します。たくさんのグーグルと実験の後、私は変わっpost 'login'
てpost :login_create
、これは実際に機能します!不思議なことに、私がで変更post
してもget
、それは機能し続けます!O_oこれは奇妙ではないですか?このメソッドはどのように機能し、使用されることを目的としていますか?
Rails APIで、クラス以外のものは見つかりませんでした。ActionController::TestCase::Behavior