如何测试从控制台登录Rails?

时间:2020-03-05 18:47:51  来源:igfitidea点击:

我花了很长时间才弄清楚如何使用Rails的响应对象登录和注销。标准的博客还可以,但是我终于诊断出了,我想在这里记录下来。

app.get '/'
assert_response :success
app.get '/auth_only_url'
assert_response 302
user = User.find(:user_to_login)
app.post '/signin_url', 
              :user_email => user.email, 
              :user_password => '<password in clear>'
assert_response 302
app.follow_redirect!
assert_response :success
app.get '/auth_only_url'
assert_response :success

请注意,以上内容表示我们在失败的身份验证请求后进行重定向,并且在登录后也进行了重定向。

为了确保将夹具加载到测试环境数据库中(通常在瑞克测试期间发生),请确保执行以下操作:

rake db:fixtures:load RAILS_ENV=test

(摘自Patrick Richie)
默认URL将显示为" www.example.com",因为此默认主机是在ActionController :: Integration :: Session中设置的

ActionController::Integration::Session.new.host=> "www.example.com"

它在actionpack / lib / action_controller / integration.rb#75中设置

要在集成测试中进行更改,请执行以下操作:

session = open_session do |s|  s.host = 'my-example-host.com' end

解决方案

回答

" www.example.com"是ActionController :: Integration :: Session中设置的默认主机

>> ActionController::Integration::Session.new.host
=> "www.example.com"

它在actionpack / lib / action_controller / integration.rb#75中设置

通过执行以下操作,我们应该能够在集成测试中对其进行更改:

session = open_session do |s|
  s.host = 'my-example-host.com'
end