Краткое описание сценария: заполнители с ограниченным числом возможных значений - PullRequest
1 голос
/ 06 февраля 2012

Я относительно новичок в BDD, и у меня есть вопрос относительно контуров сценария. Просматривая образцы в Интернете, я чувствую, что заполнители могут принимать любые значения. Количество элементов в их домене не ограничено. Здесь является одним примером:

Scenario Outline: eating
  Given there are <start> cucumbers
  When I eat <eat> cucumbers
  Then I should have <left> cucumbers

  Examples:
    | start | eat | left |
    |  12   |  5  |  7   |
    |  20   |  5  |  15  |

Например, заполнитель <start> может быть любым числом, поэтому количество значений бесконечно.

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

Я думаю, что написал бы сценарий под названием «Обновление запланированного контракта» и одну схему сценария, где статус контракта является заполнителем.

Scenario: Update a planned contract
  Given the list of contracts as follows
    | name | status  | some value |
    | c1   | planned | 123        |
  And I have edited contract c1 as follows
    | field      | value |
    | name       | c1    |
    | some value | 456   |
  When I save contract c1
  Then the list of contracts should be as follows
    | name | status  | some value |
    | c1   | planned | 456        |

Scenario Outline: Update contract
  Given there is a <status> contract
  And I have edited that contract
  When I save that contract
  Then I an error 'only planned contracts are allowed to change' should be displayed

  Examples:
    | status  |
    | ongoing |
    | paused  |
    | closed  |

Это правильный путь? Один точный сценарий и один параметризованный? Или я должен написать схему сценария как явные сценарии для каждой возможности? Я не уверен, потому что статус контракта ограничен четырьмя возможными значениями, в отличие от примеров в Интернете.

1 Ответ

1 голос
/ 08 февраля 2012

Одна вещь, которая мне помогает, - помнить, что Gherkin - это всего лишь синтаксис для Specification by Example.Вы пытаетесь предоставить примеры, наиболее подходящие для вас, на языке бизнес-доменов.

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

Однако вы намереваетесь сделать здесь, чтобы предоставить грамматику, структуру, язык, называть его как хотите,что вы можете использовать для общения с бизнес-аналитиками.Вы хотите иметь возможность извлечь этот документ и сказать: «Вот как система работает сейчас, как мы можем изменить это, чтобы она поддерживала вашу новую функцию?».

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

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