地址助手(例如root_url)返回该应用控制器VS rspec的例子不同的主机名。 我已成功能够设置域名,在我的轨道网址助手应用程式是这样的:
class ApplicationController < ActionController::Base
def default_url_options
{host: "foo.com", only_path: false}
end
end
例如,root_url输出“http://foo.com/”应用程序内,但“http://example.com”在我请求规格。 什么是在轨3.2让它们影响我的规格适用于全球的网址选项是推荐的方式? 该网址选项并不需要是动态的。
在功能规格,主机! 已被弃用。 这些添加到您的rspec_helper.rb:
# Configure Capybara expected host
Capybara.app_host = 'http://lvh.me:3000'
# Configure actual routes host during test
before(:each) do
if respond_to?(:default_url_options)
default_url_options[:host] = 'http://lvh.me:3000'
end
end
我想补充丹的回答会是这个样子的spec_helper.rb
RSpec.configure do |config|
# other config options
config.before(:each) do
host! "localhost:3000"
end
end
您可以设置在主机中的RSpec测试块之前:
before :each do
host! 'hostgoeshere.com'
end
如果你想设置全局,你可以把你的东西文件spec_helper.rb。
我尝试了许多变化@request.host
, host!
和post path, args, {'SERVER_NAME' => my_secret_domain}
没有成功,既作为控制器测试和功能测试。 十分令人气愤,因为这么多的人报告了这些方法的成功。
对我来说,解决办法是:
request.headers["SERVER_NAME"] = my_secret_domain
post path, args
我运行红宝石2.1.5p273,rspec的3.1.7和Rails 4.2.0