2012-11-07 95 views
4

無論何時我在測試中使用root_url,我都會收到http://www.example.comRails 3.1在測試環境中設置主機

它工作正常發展,在那裏我的config /環境/ development.rb有這樣的:

Rails.application.routes.default_url_options[:host]= 'localhost:3000' 

增加,這並不在配置/環境/ test.rb工作,雖然。我應該添加什麼來使用localhost:3000作爲測試環境中的主機?

+0

這是一個常見問題,請參閱此主題:http://rubyforge.org/pipermail/rspec-users/2012-January/021016.html –

回答

5

取決於default_url_options的測試代碼會導致各種問題,請參閱this thread和此issue的示例。

我已經通過在測試中修補ActionDispatch::Routing::RouteSet來解決問題,以強制rails爲我想要的任何選項(在我的情況下爲locale)包含默認值。有關詳細信息,請參閱上面鏈接的github issue中的答案。

要使用相同的方法覆蓋host選項:在文件

class ActionDispatch::Routing::RouteSet 
    def url_for_with_host_fix(options) 
    url_for_without_host_fix(options.merge(:host => 'localhost:3000')) 
    end 

    alias_method_chain :url_for, :host_fix 
end 

把這個support,應該做的伎倆。

+0

像''host =>'localhost',端口=>'3000'。 –

+1

有人應該在某個時候寫出關於此問題的博客文章或其他內容,它經常出現......無論如何,很高興該補丁修復了它。 –

+0

我有類似的問題。由於某種原因,我的應用程序具有正確的路由,但測試服務器似乎未運行,並且在測試中我一直收到「連接被拒絕」錯誤。這是否也發生在你身上?想知道如何建立與測試服務器的連接... – picardo