2011-09-07 140 views
4

我的項目的一部分開發已完成。我們的 公司要求我爲開發的代碼 編寫黃瓜測試用例以及今後的開發。 路由文件有兩個子域用於管理員和主機.Devise也使用 。子域,使用黃瓜或水豚和rspec測試

現在我安裝了黃瓜和寫的第一個場景的 第一個故事時,主頁上的非registerd用戶的土地,進入 一個有效的電子郵件和被重定向到下一個頁面page..the沒有 密碼領域。

Scenario: Non registered user lands on beta home page. 
Given: I am on the homepage 
When: I enter valid email with "[email protected]". 
Then: I should be redirected to request invitation page. 

的問題是在我的路線文件,我有,

constraints :subdomain => ADMIN_SUBDOMAIN do 
    .... 
    root :to => admin#index 
end 
constraints :subdomain => HOST do 
    ... 
    root :to => home#index. 
end 

現在我該怎樣指定path.rb文件來尋找root_path在 特定子域。 Theres no root_path寫在子域約束之外。 這是我第一次進行測試。 我真的堅持到此。任何幫助深表謝意。

我剛剛從某人那裏知道,這可以使用水豚來實現。如果是這樣,請給我一點關於它的想法。

回答

6

原來這很簡單。水豚提供了一個default_host方法。 所以我只需要提一下,

When I visit subomain sub 

然後是webstep


Given /^I visit subdomain (.*)$/ do |site_domain| 

    site_domain = "http://sub.example.com" if site_domain == "admin" 

    Capybara.default_host = site_domain 
    visit "/" 
end 

更新:

default_host的是不應該,因爲它沒有提到使用在文檔中。 請嘗試在訪問中使用絕對路徑。

Given /^I visit subdomain (.*)$/ do |site_domain| 

    site_domain = "http://sub.example.com" if site_domain == "admin" 
    visit site_domain 
end 
+0

上帝保佑你:D – imderek

+0

完美的,但會議不通過子域。如何將cookie域更改爲「所有子域」類型(.example.com)? –