4

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用作测试环境中的主机?

4

1 回答 1

5

测试依赖的代码default_url_options会导致各种问题,请参阅此线程和此问题以获取示例。

我已经解决了这个问题,通过修补ActionDispatch::Routing::RouteSet测试来强制 rails 包含我想要的任何选项的默认值(在我的情况下locale)。有关详细信息,请参阅我在上面链接的github 问题中的回答。

要使用相同的方法覆盖该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,应该可以解决问题。

于 2012-11-07T03:39:39.817 回答