在测试环境中设置default_url_options似乎不起作用

Nic*_*ick 6 testing rspec ruby-on-rails-3

我已将以下代码放入我的config/environments/test.rb文件中:

config.action_mailer.default_url_options = { :host => "localhost:3000" }
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的测试时,所有路由都会使用http://test.host.我正在尝试使用不接受http://test.host作为有效回调URI 的API ,所以我需要更改它以正确接收API响应.知道为什么这不起作用吗?(我在我的测试套件中使用RSpec,Guard和Spork).

编辑:可能相关 - 这是在控制器规范内完成的.

EDIT2:它似乎一个请求通过后作出改变get,post等运行测试中下面的代码:

Rails.logger.debug users_url
get 'http://google.com'
Rails.logger.debug users_url
Run Code Online (Sandbox Code Playgroud)

会产生以下输出:

http://localhost:3000/users
...get request related response here
http://google.com/users
Run Code Online (Sandbox Code Playgroud)

rus*_*sty 12

现在你可以在你的test.rb喜欢中设置它们:

Rails.application.routes.default_url_options[:host]= 'localhost:3000' 
Run Code Online (Sandbox Code Playgroud)


Der*_*Fan 7

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

在developemnt.rb/test.rb中,可以更简洁的如下:

Rails.application.configure do
  # ... other config ...

  routes.default_url_options[:host] = 'localhost:3000'
end
Run Code Online (Sandbox Code Playgroud)