ruby-on-rails - 如何通过 minitest 测试 after_sign_in_path_for

标签 ruby-on-rails devise minitest

我像这样更改了 after_sign_in_path_for 方法的默认行为:

class ApplicationController < ActionController::Base
  private
  def after_sign_in_path_for(resource)
    return admin_root_path if resource.is_a?(AdminUser)
    request.referrer || root_path
  end
end

它可以找到,现在我想通过 minitest 测试它。 但是我不知道如何为它编写集成测试。

尽管rspec 有答案,但我无法为minitest 重写。

How to test after_sign_in_path_for(resource)?

如何通过 minitestafter_sign_in_path_for 编写测试?

rails :5.1 设计:4.5.0

require 'test_helper'

class ApplicationControllerTest < ActionDispatch::IntegrationTest
  include Devise::Test::IntegrationHelpers
  setup do
    2.times{ create(:post) }
    @user = create(:user)
    @admin_user = create(:admin_user)
  end

  test "should redirect to '/posts/1' after login" do
    # get "/posts/1"
    # sign_in(@user)
    # test return back "/posts/1"
  end

  test "should redirect to '/posts/2' after login" do
    # get "/posts/2"
    # sign_in(@user)
    # test return back "/posts/2"
  end

  test "should redirect to admin root page after login" do
    # sign_in(@adminuser)
    # test go to admin root page
  end
end

最佳答案

你可以像这样测试它们:

require 'test_helper'

class ApplicationControllerTest < ActionDispatch::IntegrationTest
  include Devise::Test::IntegrationHelpers
  setup do
    @user = create(:user)
    @admin_user = create(:admin_user)
  end

  test "should redirect to current page after login" do
    sign_in(@user)
    get :index
    assert_redirected_to controller: "home", action: "index"
  end

  test "should redirect to admin root page after login" do
    sign_in(@adminuser)
    get :index
    assert_redirected_to controller: "admin", action: "index"
  end
end

assert_redirected_to API docs

关于ruby-on-rails - 如何通过 minitest 测试 after_sign_in_path_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55156983/

相关文章:

ruby-on-rails - Heroku 没有看到 gem 'pg'

ruby-on-rails - 如何通过OAuth身份验证传递参数,以便回调或 Controller 可以使用?

ruby-on-rails - Rails 5,公寓和设计 : sign in with subdomains are not working

ruby-on-rails - rails : Automatically running failed tests

shoulda - minitest-rails-shoulda 和 minitest 给了我未定义的方法 `run_teardown_hooks'

ruby-on-rails - class_instruction 中的学生和教师

ruby-on-rails - 无法在savon调用上设置SOAP header 参数

ruby-on-rails - YAML 输入,YAML 输出——一般问题/指南

ruby-on-rails - 设计 :password and :encrypted_password

ruby-on-rails - 如何在 Cucumber 步骤中使用 minitest fixture ?