2012-04-17 156 views
7

我正在開發一個嚴重依賴子域的應用程序。它有一個嵌入在應用程序(一個模塊)中的應用程序,該應用程序將成爲管理應用程序的後端。讓我們把它命名爲kong。Rails:如何使用RSpec測試子域

我有這樣的代碼在我的路線文件:

constraints :subdomain => "kong" do 
    scope :module => "kong", :as => "kong" do 
    resources :clients 
    end 
end 

如何測試這條路線,這樣,當我寫的東西好像是由子域獲取和以下只能從子域:

get :index 

回答

5

在測試單元我使用像這樣設置request.host來自一個子域:

def get_sub(sub = "one") 
    @request.host = "#{sub}.local.me" 
end 

我個人會在需要時將其放入spec_helper.rb文件和參考中。

對你來說,在這些測試中,你設置sub等於"kong"可能像

before :each do 
    get_sub("kong") 
end 

這個小丑也有一個答案太,我發現後through google

+7

你爲什麼調用此方法'get_sub'當它清楚地設置一個值時?另外,爲什麼要縮短它? 'set_subdomain'或'stub_subdomain'是這個方法的優秀名字。 – 2012-04-17 14:42:03

+2

我想在完美的事後世界中,我會稱它爲「set_subdomain」,但迂腐一邊,答案仍然有效。 OP可以將方法更改爲他所選擇的任何方法。 – pjammer 2012-04-17 14:52:01

+5

注意這不會在路由規範中工作,因爲'@ request'將是無效的 – lulalala 2012-05-14 07:26:42