2014-04-08 49 views
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 

回答

2

這就是保羅明白MyApp是你的應用程序的名稱,我懷疑。您應該更改它並使用應用程序的實際名稱。更好的是,

Rails.application.routes.append 
     controller :test do 
     get 'test/index' => :index 
     end 
    end 
+0

這實際上是我嘗試過的幾種模式之一,沒有成功。 Rails仍然無法將路由連接到測試控制器的方法。 'ActionController :: UrlGenerationError:沒有路由匹配{:action =>「index」,:controller =>「test」}' – RonLugge

+0

您可能需要向我們展示您的測試。沒有更多信息,我不能幫你 – boulder

+0

剛剛發生在我身上:使用Rails.application.routes.draw,而不是追加。在你的拆解中,你可能想要做'Rails.application.reload_routes!',所以一切都恢復正常 – boulder

相關問題