红宝石 – 黄瓜和水豚,如何打开外部网址或访问外部网址

我正在使用黄瓜和水豚.在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

“web页面”在support / paths.rb中定义为:

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

显然这是一个外部网址.我想打开它,水豚和黄瓜不允许我这样做.所以,帮我找一个打开外部url的方法在黄瓜测试用例!

解决方法

Capybara使用RackTest作为默认驱动程序,此驱动程序不允许访问外部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

然后你可以调用url:

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...