1

RSpec/Capybara に関して一般的な質問があります。アプリケーションが TLD に基づいてリダイレクトを行う場合 (たとえば、example.com と example.net の両方が同じ IP に解決されますが、最初のリクエストは example.com/locale_com にリダイレクトされ、2 番目のリクエストは - example.net/locale_net へ)、リクエスト テストはどのようになりますか? アプリはRailsで書かれています。

私はそれを行う 1 つの方法を考えることができます - 両方のホスト (example.com と example.net) のエントリを追加して、/etc/hosts で 127.0.0.1 に解決します - しかし、テストが実行されるため、それはうまくいきません。 root アクセス権のない別のマシンで。

4

2 に答える 2

0

ルートファイルを介してリダイレクトが発生する場合は、次のコードを使用して、コントローラーの仕様外でこれをテストできます。

describe "Route Redirects" do
  describe "GET example.net" do
    before(:each) do
      request.host = "example.net"
      get "/"
    end

    it "redirect to example.com" do
      expect(response.code).to eq 302
      uri = URI.parse(response.location)
      expect(uri.host).to eq "example.com"
    end
  end
end
于 2012-09-18T14:26:46.173 に答える
0

これを Rspec コントローラー テスト内でテストします。

describe MyController do
  describe "GET index" do
    before(:each) do
      request.host = "example.net"
      get :index
    end

    it "should redirect .net to .com" do
      uri = URI.parse(response.headers["Location"])
      expect(uri.host).to eq "example.com"
    end
  end
end
于 2012-09-18T12:46:06.633 に答える