огурец и водосвинка, как открыть внешний URL или посетить внешний URL

я использую огурец и капибару. на платформе 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. Я хочу открыть его, а капибара и огурец не позволяют мне это сделать. Итак, помогите мне найти способ открыть внешний URL-адрес в тестовом примере с огурцом!


person Bilal Basharat    schedule 30.11.2011    source источник
comment
Почему вам нужно находиться на внешней странице, чтобы протестировать ваше приложение?   -  person David Sulc    schedule 01.12.2011
comment
Особенность нашего приложения в том, что пользователь может запустить его, находясь на какой-то другой внешней странице!   -  person Bilal Basharat    schedule 01.12.2011


Ответы (1)


Capybara использует 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

Затем вы можете вызвать 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.

person Marek Příhoda    schedule 30.11.2011
comment
я просто добавляю драгоценный камень селена в свой gemfile, и это решено! Большое спасибо - person Bilal Basharat; 01.12.2011