1

我找到的用于测试应用程序控制器内部的最接近的资源是here。不幸的是,它实际上不起作用—— MyApp 生成一个未初始化的常量。我尝试了其他添加适当路线的方法,但都没有奏效。

我的目的是测试我嵌入到 ApplicationController 中的身份验证方法——我不想将测试放到其他控制器中,因为这不是他们关心的问题。这是支持他们的东西,但它不是“他们的”功能的一部分。需要'test_helper'

class TestController < ApplicationController
  def index; end
end

class AppControllerTest < ActionController::TestCase

  Rails.application.routes.draw do
    controller :test do
      get 'test/index' => :index
    end
  end

  setup do
    @controller = TestController.new
  end

  should "return nil if there is no district subdomain" do
    get :index
    assert_equal 'bar', @controller.send(:foo)
  end

end

上面的代码导致 url helper 方法错误:

ActionController::UrlGenerationError: No route matches {:action=>"index", :controller=>"test"}

编辑:

感谢 Boulder 的善意建议,我跳过了这个,但他关于修复路线的建议不起作用:

teardown do
  Rails.application.reload_routes!
end
4

1 回答 1

2

这是假设 MyApp 是您的应用程序的名称,我对此表示怀疑。您应该更改它并使用应用程序的实际名称。更好的是,做

    Rails.application.routes.append
      controller :test do
        get 'test/index' => :index
      end
    end
于 2014-04-08T17:45:08.647 回答