2011-11-30 90 views
13

我正在使用黃瓜和水豚。在一個rails 3.0.9平臺上。我得到這個測試用例失敗: 日誌:黃瓜和水豚,如何打開外部網址或訪問外部網址

(::) failed steps (::) 

No route matches "/wiki/Baltimore_Ravens" (ActionController::RoutingError) 
<internal:prelude>:10:in `synchronize' 
./features/step_definitions/web_steps.rb:20:in `/^(?:|I)am on (.+)$/' 
features/annotate.feature:7:in `Given I am on a web page' 

Failing Scenarios: 
cucumber features/annotate.feature:11 # Scenario: launch annotation/ logged in 

6 scenarios (1 failed, 5 skipped) 
63 steps (1 failed, 62 skipped) 

文件web_steps:拿到這段代碼:

19 Given /^(?:|I)am on (.+)$/ do |page_name| 
20 visit path_to(page_name) 
21 end 

文件annotate.feature得到這個代碼:

7 Given I am on a web page 

support/paths.rb中定義的「網頁」爲:

when /a web page/ 
    'http://en.wikipedia.org/wiki/Baltimore_Ravens' 

顯然這是一個外部網址。我想打開它,水豚和黃瓜不會讓我這樣做。所以,幫助我找到一種在黃瓜測試用例中打開外部URL的方法!

+0

爲什麼你需要在外部頁面上測試你的應用程序? –

+0

我們的應用程序的功能,用戶可以在他瀏覽其他外部頁面時啓動它! –

+0

巴爾的摩烏鴉隊! – jphager2

回答

19

水豚使用RackTest作爲默認驅動程序,並且此驅動程序不允許訪問外部URL(即測試遠程應用程序)。

如果您要訪問外部URL(測試,例如,你的應用程序正確重定向),你有兩種基本選擇:

1 /使用另一個驅動例如像硒:

before do 
    Capybara.current_driver = :selenium 
end 

然後,在代碼中,你可以調用的URL像這樣:

visit 'http://en.wikipedia.org/wiki/Baltimore_Ravens' 

或者,如果設置默認app_host像這樣:

Capybara.app_host = 'http://en.wikipedia.org' 
Capybara.run_server = false # don't start Rack 

然後就可以調用的網址:

visit '/wiki/Baltimore_Ravens' 

您可以配置驅動程序和應用主機在spec_helper.rb在所有您規格全局啓用它們:

Capybara.configure do |config| 
    config.current_driver = :selenium 
    config.run_server = false 
    config.app_host = 'http://en.wikipedia.org' 
end 

2 /使用capybara-mechanize

+0

我只是將硒的寶石添加到我的gem文件中,並且已解決!非常感謝 –