每当我在测试中使用http://www.example.com
时,我都会收到root_url
。
它在开发中运行良好,我在config / environments / development.rb中有这个:
Rails.application.routes.default_url_options[:host]= 'localhost:3000'
但是,添加它在config / environments / test.rb中不起作用。我应该添加什么来使用localhost:3000
作为测试环境中的主机?
答案 0 :(得分: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
的文件中,应该这样做。