gpt4 book ai didi

ruby-on-rails - cucumber 和 capybara ,如何打开外部网址或访问外部网址

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:39 24 4
gpt4 key购买 nike

我用的是 cucumber 和 capybara 。在 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。我想打开它,但 capybara 和 cucumber 不允许我打开它。所以,帮我想办法在 Cucumber 测试用例中打开外部 URL!

最佳答案

Capybara 使用 RackTest 作为默认驱动程序,此驱动程序不允许访问外部 url(即测试远程应用程序)。

如果您想访问外部 URL(以测试,例如,您的应用是否正确重定向),您基本上有两个选择:

1/使用其他驱动程序,例如 selenium:

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

关于ruby-on-rails - cucumber 和 capybara ,如何打开外部网址或访问外部网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8332262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com