在我application_controller,我有下面的一組包括由url_for生成的所有路徑的語言環境:如何設置功能測試(Rails)的區域default_url_options
def default_url_options(options={})
{ :locale => I18n.locale }
end
我的資源路徑則有:串流中刪除= 「/:locale」
在網站上正常工作。
但是,當涉及到我的功能測試中,:區域不與生成的URL傳遞,因此他們都失敗。我可以通過添加區域設置的URL在我的測試中,像這樣繞過它:
get :new, :locale => 'en'
但我不希望有區域設置手動添加到每一個功能測試。
我嘗試添加了default_url_options DEF以上test_helper,但它似乎沒有任何效果。
有沒有什麼辦法可以改變default_url_options以包括了所有的考試的語言環境?
謝謝。
謝謝,約翰。這解決了上面的具體情況,似乎很好! 它似乎並沒有解決的問題是TestCase如何解釋命名路由,無論它們是在測試本身中,還是在應用程序中使用。例如,如果我有一個測試: redirect_to homepage_url 和homepath_url需要語言環境(map.homepage'/:locale',:controller =>'home'),當運行測試時出現錯誤, URL要求不滿意(缺少「區域設置」)。再次,應用程序運行良好,因爲default_url_options負責添加區域設置。有什麼辦法解決這個問題? – 2010-01-01 03:27:48
我想補充一句,如果這只是測試本身的一個問題,那就不會那麼糟糕。無論何時在測試中使用命名路由,我都可以添加區域設置。但問題是,無論何時在我的應用程序中使用命名路由時,它也會生成一個錯誤(並且我不希望每次都改變所有這些或指定區域設置,這樣我的測試將運行)。 – 2010-01-01 03:34:22
啊,我沒有意識到它也發生在你的應用中。我剛剛遇到了一張燈塔,可能會幫助你一點點(似乎仍然是一個問題,但有一些解決辦法)https://rails.lighthouseapp.com/projects/8994/tickets/1251-default_url_options-cant -be-used-named-routes – 2010-01-02 01:23:45