我找到的用于测试应用程序控制器内部的最接近的资源是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