Как избежать проблем параллелизма, запустив сценарии @javascript? - PullRequest
0 голосов
/ 25 марта 2012

Я использую Ruby on Rails 3.2.2, cucumber-rails-1.3.0, rspec-rails-2.8.1 и capybara-1.1.2 с драйвером Selenium. У меня проблема с параллелизмом при запуске сценариев JavaScript (предполагается, что мой случай связан с проблемой параллелизма).

В моем .feature файле у меня есть:

Feature: ...
  ...

  @javascript
  Scenario: ...
    Given ...
    When I log out
    Then I should be redirected to the home page

В моем определении шага .rb у меня есть файл:

Then /^I should be redirected to the home page$/ do
  current_path.should == root_path
end

Когда я запускаю командную строку cucumber в окне терминала, чтобы запустить тесты, я получаю эту ошибку:

$ cucumber
Using the default profile...

Feature: ...
  ...

  @javascript
  Scenario: ...
    ...
    When I log out
    Then I should be redirected to the home page
      expected: "/"
        got: "/user" (using ==) (RSpec::Expectations::ExpectationNotMetError)
        ...

Однако, если в моем определении шага .rb file я использую

Then /^I should be redirected to the home page$/ do
  sleep(1)

  current_path.should == root_path
end

работает как положено: все тесты пройдены.

Итак, даже если проблема кажется решенной, есть лучший способ решить мою проблему? если да, то каково «правильное» / «часто используемое» решение (возможно, с использованием некоторого API-интерфейса Capybara) ?

1 Ответ

1 голос
/ 25 марта 2012

Это не параллелизм. Проблема в том, что огурец не синхронизирован с вашим приложением. Тестирующая сторона ничего не знает о том, завершило ли ваше действие выполнение или нет. Поэтому, когда вы указываете путь, ваше приложение не сгенерировало ответ, который фактически выполняет перенаправление.

Если вы посмотрите на капибару, то увидите, что она опрашивает элемент. (С защитой макс. Время ожидания). Таким образом, вы можете либо использовать тот же подход и провести опрос в течение некоторого времени, либо вы можете выбрать более ленивый подход и в своем тесте перед проверкой пути добавить шаг, который проверит наличие некоторого содержимого на целевой странице. Таким образом, вы можете положиться на встроенный механизм капибары.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...