不同的顶级域重定向RSpec / Capybara测试

时间:2012-09-03 20:51:06

标签: ruby-on-rails rspec capybara

关于RSpec / Capybara,我有一个相当笼统的问题。如果应用程序基于TLD执行重定向(例如,example.com和example.net都解析为相同的IP,但是对第一个的请求被重定向到example.com/locale_com而请求重定向到第二个 - 到example.net/locale_net),请求测试将如何?该应用程序是用Rails编写的。

我可以想到一种方法 - 为两个主机(example.com和example.net)添加条目以解析为/ etc / hosts中的127.0.0.1 - 但这对我不起作用,因为测试将在没有root访问权限的不同机器上运行。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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