Рельсы 3.1. Драйвер Capybara Selenium не улавливает ошибку маршрутизации - PullRequest
2 голосов
/ 26 мая 2011

Когда я использую метод visit в определениях шагов Cucumber, а затем запускаю шаг через драйвер Selenium Capybara, он пропускается, несмотря на то, что контроллер не реализован.

Вот пример:

Функция

# features/one.feature

Feature: One

  @selenium
  Scenario: One
    Given I visit the example page

Определение шага

# features/step_definitions/example_steps.rb

Given /^I visit the example page$/ do
  visit example_path
end

Маршрут

# config/routes.rb

Example::Application.routes.draw do
  resource :example
end

Контроллер

не реализовано

Результат

Feature: One

    @selenium
    Scenario: One
      Given I visit the example page

    1 scenario (1 passed)
    1 step (1 passed)
    0m18.162s

Однако, когда я использую драйвер RackTest, все работает так, как ожидалось, и исключение маршрутизации возрастает, если не реализован контроллер.

Вот тот же пример, но с использованием RackTest:

Feature

# features/one.feature

Feature: One

  @rack_test
  Scenario: One
    Given I visit the example page

Результат

Feature: One

  @rack_test
  Scenario: One
    Given I visit the example page
      uninitialized constant ExamplesController (ActionController::RoutingError)
      ./features/step_definitions/example_steps.rb:2:in `/^I visit the example page$/'
      features/one.feature:5:in `Given I visit the example page'

Failing Scenarios:
cucumber features/one.feature:4 # Scenario: One

1 scenario (1 failed)
1 step (1 failed)

Как заставить Capybara вызвать ошибку маршрутизации при использовании драйвера Selenium?

Спасибо.

Ruby 1.9.2;

Ruby on Rails 3.1.0.rc1;

огурец 0.10.3;

огурцы-рельсы 0,5,0;

Капибара 1.0.0.beta1;

Selenium-webdriver 0.2.0.

1 Ответ

1 голос
/ 17 июня 2011

Драйвер Selenium не дает сбоя, когда получает http-код «сбой», например, 500. Если вы оставили свой config / environment / test.rb с настройками по умолчанию, должна быть строка config.action_dispatch.show_exceptions = false.Таким образом, вы можете установить значение true или добавить еще несколько шагов, чтобы убедиться, что страница действительно показывает то, что вы ожидаете.

...