【发布时间】:2012-09-04 17:19:59
【问题描述】:
我正在使用 RSpec(通过 gem rspec-rails)进行测试和开发 我的应用程序。 我试图“测试”一个控制器,并遇到了 post 和 get 方法的奇怪行为(对于所有其他此类)。
在我的路线文件中:
controller :sessions do
post '/login', action: :login_create
get '/login', action: :login
get '/logout', action: :logout
end
一开始,我以为post会模拟一个http post 在指定的 url 请求,所以我在我的规范中写道:
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
【问题讨论】:
标签: ruby-on-rails testing rspec controller