我的rails 3应用程序必须有一个子域才能工作,我的rspec控制器测试失败了

时间:2011-05-17 15:59:38

标签: ruby-on-rails rspec

我正在使用lvh.me:3000重定向到localhost,并允许我使用以下通配符:

test.lvh.me:3000

在我的application_controller中,我确保url中有一个子域,并查看数据库中的子域。

如果没有子域名,我会重定向到错误页面。

因此,我的rspec控制器测试失败,因为测试没有子域。

如何让get 'index'调用使用我知道存在于测试数据库中的子域?

1 个答案:

答案 0 :(得分:4)

要解决这个问题,请执行以下操作:

# spec/support/spec_helper_methods.rb
def require_subdomain
  @subdomain = # however you establish subdomains in you app
  controller.expects(:current_subdomain).returns(@subdomain)
  @request.host = "#{@subdomain}.test.host"
end

然后在我的规格中:

describe UsersController do

  describe "GET /users/new" do

    before do
      require_subdomain
    end

  end

end

注意 - 我在这里使用Mocha,因此使用expects()returns()方法。

在我的控制器中,我要求current_subdomain()并在没有一个

时加注404