8

Url ヘルパー (root_url など) は、アプリ コントローラーと rspec の例で異なるホスト名を返します。次のように、Rails アプリで URL ヘルパーのドメインを正常に設定できました。

class ApplicationController < ActionController::Base
  def default_url_options
    {host: "foo.com", only_path: false}
  end
end

たとえば、root_url はアプリケーション内では "http://foo.com/" を出力しますが、私の要求仕様では "http://example.com" を出力します。これらの URL オプションを Rails 3.2 でグローバルに適用して仕様に影響を与えるには、どのような方法が推奨されますか? URL オプションは動的である必要はありません。

4

4 に答える 4

6

機能仕様では、ホスト! 廃止されました。これらを 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
于 2015-02-23T21:28:50.347 に答える
4

ダンの答えに追加するだけで、spec_helper.rbで次のようになります

RSpec.configure do |config|
  # other config options
  config.before(:each) do
    host! "localhost:3000"
  end
end
于 2013-11-21T18:55:04.880 に答える
2

rspec のテストの before ブロックでホストを設定できます。

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

グローバルに設定したい場合は、spec_helper.rb ファイルに何かを入れることができます。

于 2012-08-17T01:31:59.733 に答える
1

@request.hosthost!、およびのさまざまなバリエーションを試しましたがpost path, args, {'SERVER_NAME' => my_secret_domain}、コントローラー テストと機能テストの両方で成功しませんでした。他の多くの人がこれらのアプローチで成功したと報告しているため、非常に悪化しています。

私にとっての解決策は次のとおりです。

request.headers["SERVER_NAME"] = my_secret_domain
post path, args

Ruby 2.1.5p273、rspec 3.1.7、Rails 4.2.0 を実行しています。

于 2015-04-08T20:43:59.870 に答える