1

关于 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访问权限的不同机器上。

4

2 回答 2

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 回答
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 回答