用Devise登录后测试重定向

时间:2010-10-27 19:21:46

标签: ruby-on-rails ruby rspec devise

我遵循了Devise github页面的建议:

http://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

现在这很有效,但是你现在如何测试你有这种行为?

3 个答案:

答案 0 :(得分:4)

通过在继承应用程序控制器的控制器中编写测试,有两种方法可以在单元级别对其进行测试。代码看起来像

it "should redirect to page_x after logged in" do
  sign_in :user_role, @user 
  set_devise_mapping(:user_role) 
  get :new 
  response.should redirect_to(user_roles_dashboard_path) 
end

对于黄瓜,您应该写一个步骤来进行登录并断言如果您在sign_in页面之后处于预期状态。

答案 1 :(得分:3)

嗯......我认为你应该编写自己的集成测试来检查行为。如果您没有使用Devise代码,则无需进行单元测试或功能测试。

答案 2 :(得分:0)

如果您只是在使用迷你测试,那就是这样的:

require 'test_helper'

class SessionsControllerTest < ActionDispatch::IntegrationTest
  include Devise::Test::IntegrationHelpers

  test "admins should be redirected to comments_url" do
    sign_in(users(:one))
    post user_session_url
    assert_redirected_to comments_url
  end

  test "No admins should be redirected to root_path" do
    sign_in(users(:two))
    post user_session_url
    assert_redirected_to root_url
  end
end