我正在使用RSpec(通過gem rspec-rails)來測試和開發 我的應用程序。 我試着「測試」一個控制器,並運行後對一個奇怪的行爲,並獲得方法(所有其他類型的相同)。測試Rails控制器:獲取併發布奇怪行爲
在我的路線文件:
controller :sessions do
post '/login', action: :login_create
get '/login', action: :login
get '/logout', action: :logout
end
在開始的時候,我在想,後期將模擬在指定的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
沒關係,但發佈,獲取,放置和刪除有什麼區別?這只是一個清晰的問題嗎? – Iazel
當動作被調用時,它設置正確的'request.method'。 (這麼晚纔回復很抱歉!!) –