Rails:如何使用RSpec测试子域

Rob*_*udi 7 subdomain rspec ruby-on-rails-3

我正在开发一个严重依赖子域的应用程序.它有一个嵌入在应用程序(模块)中的应用程序,它将作为管理应用程序的后端.我们把它命名为kong.

我在我的路线文件中有这个代码:

constraints :subdomain => "kong" do
  scope :module => "kong", :as => "kong" do
    resources :clients
  end
end
Run Code Online (Sandbox Code Playgroud)

我如何测试这条路线,以便当我写下类似于下面的内容时,它从子域中获取,并且仅从子域中获取:

get :index
Run Code Online (Sandbox Code Playgroud)

pja*_*mer 5

在测试单元中,我使用类似这样的东西来设置request.host来自子域:

def get_sub(sub = "one")
  @request.host = "#{sub}.local.me" 
end
Run Code Online (Sandbox Code Playgroud)

我个人会spec_helper.rb在需要时把它放到文件中并引用.

对于你来说,在那些测试中,你可能会设置sub为相同的"kong"

before :each do
  get_sub("kong")
end
Run Code Online (Sandbox Code Playgroud)

这个小丑也有一个答案,我通过谷歌后发现

  • 为什么在明确设置值时调用此方法`get_sub`?还有,为什么缩短呢?`set_subdomain`或`stub_subdomain`将是这个方法的优秀名称. (7认同)
  • 请注意,这在路由规范中不起作用,因为`@ request`将为nil (5认同)
  • 我想在完美的后见之明的世界里,我会把它称为"set_subdomain",但除了迂腐,答案仍然有效.OP可以将方法改变为他选择的任何方式. (2认同)