Minitest - 在Rails 4中测试ApplicationController before_action

时间:2015-05-20 22:31:00

标签: ruby-on-rails minitest

如何在Minitest中测试ApplicationController before_action?我有一个before_action从url params设置locale但我不知道如何为它设置测试。

1 个答案:

答案 0 :(得分:2)

您可以通过设置匿名控制器并将规范请求路由到该控制器来实现。

以下是一个例子:

require 'test_helper'

class BaseController < ApplicationController
  def index
    render nothing: true
  end
end

class BaseControllerTest  < ActionDispatch::IntegrationTest
  test 'redirects if user is not logedin' do
    Rails.application.routes.draw do
      get 'base' => 'base#index'
    end

    get '/base'

    assert_equal 302, status
    assert_redirected_to 'http://example.com/login'
    Rails.application.routes_reloader.reload!
  end

  test 'returns success if user is loggedin' do
    Rails.application.routes.draw do
      get 'base' => 'base#index'
    end

    mock_auth!

    get '/base'
    assert_equal 200, status
    Rails.application.routes_reloader.reload!
  end
end