Использование огурца в маринаде path_to_pickle

Я просто смотрю на pickle (на Rails 3) для упрощения моих шагов и путей в огурце. У меня проблемы с использованием path_to_pickle для создания путей редактирования.

Я установил рассол с помощью:

  rails g pickle --paths --email

У меня есть сценарий редактирования книги:

  Scenario: Edit a ledger
    Given I have a ledger with name "Digitech"
    When I go to the ledger's edit page
    And I fill in "Name" with "Test Ledger"
    And I press "Update Ledger"
    Then I should be on the ledgers page
    And I should see "Ledger was successfully updated."

Я использую стандартные пути, которые генерирует рассол:

when /^#{capture_model}(?:'s)? page$/                           # eg. the forum's page
  path_to_pickle $1

when /^#{capture_model}(?:'s)? #{capture_model}(?:'s)? page$/   # eg. the forum's post's page
  path_to_pickle $1, $2

when /^#{capture_model}(?:'s)? #{capture_model}'s (.+?) page$/  # eg. the forum's post's comments page
  path_to_pickle $1, $2, :extra => $3                           #  or the forum's post's edit page

when /^#{capture_model}(?:'s)? (.+?) page$/                     # eg. the forum's posts page
  path_to_pickle $1, :extra => $2                               #  or the forum's edit page

Я получаю эту ошибку при попытке запустить огурец

When I go to the ledger's edit page                 # features/step_definitions/web_steps.rb:19
  Could not figure out a path for ["the ledger"] {:extra=>"edit"} (RuntimeError)
  ./features/support/paths.rb:32:in `path_to'
  ./features/step_definitions/web_steps.rb:20:in `/^(?:|I )go to (.+)$/'
  features/ledger/manage_ledgers.feature:61:in `When I go to the ledger's edit page'

Я прочитал в списке рассылки, что path_to_pickle требует внимания, но это было еще в сентябре, так ли это до сих пор?

Должен ли я использовать что-то вроде polymorphic_path (модель ($ 1))?


person map7    schedule 09.03.2011    source источник


Ответы (1)


В итоге я отказался от path_to_pickle и использовал полиморфный путь. Это шаг, который я написал специально для захвата страницы редактирования. Вы можете заменить «редактировать» на более общее решение.

when /^the edit page for #{capture_model}$/ 
  polymorphic_path(model!($1), :action => "edit")
person jeremiahishere    schedule 27.05.2011
comment
Пробовал это со строкой «Когда»: «Когда я перехожу на страницу редактирования главной бухгалтерской книги», и я получаю сообщение об ошибке «Модель:« Основная бухгалтерская книга »не известна в этом сценарии». Как polymorphic_path знает, какую книгу редактировать? Или как мне сформировать оператор when, соответствующий этой команде пути? - person map7; 30.05.2011
comment
Когда вы используете модель рассола! , вам нужно обязательно использовать шаг pickle, чтобы сначала идентифицировать экземпляр модели, которую вы хотите. Он принимает в качестве входных данных строку этого реестра, поэтому значение, на которое он ссылается, должно быть установлено до использования ссылки. Вместо того, чтобы использовать «У меня есть реестр ...», вам нужно использовать реестр существует .... Если вы хотите сохранить текущий синтаксис, добавьте строку «реестр должен существовать ...» для настройки данных рассола. - person jeremiahishere; 01.06.2011