1
我在應用程序控制器中測試的東西最近的資源是here。不幸的是,它實際上不工作 - MyApp生成一個未初始化的常量。我嘗試了添加適當路線的其他方法,但都沒有工作。如何使用Shoulda測試Application Controller方法?
我的目的是測試我嵌入到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"}
編輯:
由於博爾德的一種建議,我移過這一點,但他的建議以後修復路線不起作用:
teardown do
Rails.application.reload_routes!
end
這實際上是我嘗試過的幾種模式之一,沒有成功。 Rails仍然無法將路由連接到測試控制器的方法。 'ActionController :: UrlGenerationError:沒有路由匹配{:action =>「index」,:controller =>「test」}' – RonLugge
您可能需要向我們展示您的測試。沒有更多信息,我不能幫你 – boulder
剛剛發生在我身上:使用Rails.application.routes.draw,而不是追加。在你的拆解中,你可能想要做'Rails.application.reload_routes!',所以一切都恢復正常 – boulder