2008-09-04 36 views
6

我有一段时间搞清楚如何使用来自Rails的响应对象登录和注销。标准的博客是好的,但我终于诊断出来了,我想在这里记录下来。如何测试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 

注意,上述意味着你失败的身份验证请求后重定向,并且还关系到你在登录后重定向。

为确保您的灯具加载到您的测试环境DB(这通​​常发生耙测试)过程中,一定要执行以下命令:

rake db:fixtures:load RAILS_ENV=test 

(从帕特里克·里奇) 默认网址将显示为“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 

回答

2

“www.example。 com'是在ActionController :: Integration :: Session中设置的默认主机。它设置在actionpack/lib/action_controller/i中ntegration.rb#75

您应该能够通过执行以下操作来更改它在你的集成测试:

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