我遵循了设计GitHub页面的建议:

http://github.com/plataformatec/devise/wiki/how-to :-redirect-to-specific-page-on-successcessful-sign-in

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

有帮助吗?

解决方案

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

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

对于Cucumber,您可能应该编写一个步骤来进行登录并断言是否在签名页面之后的预期。

其他提示

嗯...我认为您应该编写自己的集成测试来检查行为。如果您不弄乱设计代码,则无需单位测试或功能测试。

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

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top