2012-02-06 2 views
1

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

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

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

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

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

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

+0

Спасибо AlSki! Извините за поздний комментарий. Уведомление о вашем ответе на электронную почту не помогло. – Yavuz