Шаг огурца для всех сценариев - PullRequest
1 голос
/ 23 декабря 2010

У меня есть около 30 сценариев, когда все столбцы 1 требуют, чтобы этот шаг был на вершине Background:

Given I have an account:
  | name     | path     |
  | ticketee | ticketee |

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

Теперь я подумал, а не помещать это в каждый отдельный файл функций 29 раз, чтобы я мог использовать метод Before в Cucumber, которыйозначает размещение файла в features/support/create_account.rb с таким кодом:

Before do
  steps(%Q{
    Given I have an account:
      | name     | path     |
      | ticketee | ticketee |
  })
end

Единственным недостатком этого является то, что он извлекает то, что, по мнению некоторых, относится к функции, к очень трудному для отслеживаниярасположение и, вероятно, не является стандартным.Но с другой стороны, это экономит много повторений.

Что мне делать?

Ответы [ 3 ]

3 голосов
/ 23 декабря 2010

Я бы использовал теговый хук , такой как @with_ticketee_account.Это все еще приносит немного повторений, но делает фон сценария более очевидным, чем его полное скрытие.

Если вы хотите сделать это так, вам нужно пометить только один нечетный сценарий, возможно, создайтетеговый хук, такой как @without_ticketee_account, который устанавливает переменную, которую ваш универсальный перед фильтром может проверить перед созданием учетной записи ticketee.

1 голос
/ 23 декабря 2010

Tagged hook - ИМХО хорошая идея.

Другая идея состоит в том, чтобы сделать эту одну строку вместо трех. возможно:

Given I have an account called "ticketee"

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

0 голосов
/ 23 декабря 2010

Я бы пошёл дальше и извлек его в блок «До», как вы предложили, или использовал фабрику (например, factory_girl).

...