扶手:错误的主机名在rspec的网址助手(Rails: Wrong hostname for url

2019-07-29 08:02发布

地址助手(例如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让它们影响我的规格适用于全球的网址选项是推荐的方式? 该网址选项并不需要是动态的。

Answer 1:

在功能规格,主机! 已被弃用。 这些添加到您的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


Answer 2:

我想补充丹的回答会是这个样子的spec_helper.rb

RSpec.configure do |config|
  # other config options
  config.before(:each) do
    host! "localhost:3000"
  end
end


Answer 3:

您可以设置在主机中的RSpec测试块之前:

    before :each do
      host! 'hostgoeshere.com'
    end

如果你想设置全局,你可以把你的东西文件spec_helper.rb。



Answer 4:

我尝试了许多变化@request.hosthost!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



文章来源: Rails: Wrong hostname for url helpers in rspec