Как мне реализовать SpecFlow Hooks для нескольких частей, когда условия? - PullRequest
0 голосов
/ 13 декабря 2011

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

Scenario Outline: Stub matches NEXT oldest outstanding bill
    Given I have a group with the following bills:
        | Id     | Due Date   | Status               | Amount Due |
        | Bill A | 9/14/2011  | <Oldest Bill Status> | 1100.00    |
        | Bill B | 10/14/2011 | Unpaid               | 1200.00    |
        | Bill C | 11/14/2011 | Unpaid               | 1300.00    |
    When a stub is received that matches 'Bill B'
            And the Payment Amount is <Payment Amount>
    Then the allocation result should <Allocation Result>
            And Review should <Review>
Examples:
    | Oldest Bill Status | Allocation Result | Review       | Payment Amount |
    | Reconciled         | Allocate to Bill  | not required | 1200.00        |

[When(@"a stub is received that matches '(.*)'")]
        public void WhenAStubIsReceivedThatMatches(string billKeyName)
        {
           // Method
            }

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

Ответы [ 2 ]

2 голосов
/ 28 января 2012

Лучше всего иметь один оператор When.

Некоторые параметры включают в себя:

 When a stub is received that matches 'Bill B' for <Payment Amount>

и, следовательно:

[When(@"a stub is received that matches '(.*)' for ([\d\.]*)")]
public void WhenAStubIsReceivedThatMatches(string billKeyName, decimal amount)
{
    // create stub and "recieve" it
}

ИЛИ

 Given ...etc...
 And I have a stub is received that matches 'Bill B' for <Payment Amount>
 When I receive the stub

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

1 голос
/ 14 декабря 2011

Наличие более одного предложения When не обсуждается ... Я думаю, что вы можете понять (и объяснить) почему, так как вы задаете этот вопрос.Довольно сложно соединить несколько действий, так как они зависят друг от друга.

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

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

Это небольшой рецепт, который я нашел полезным для написания сценариев

  • Сначала напишите короткое название
  • , а затем начните заполнять шаги «Тогда».Что вы собираетесь в конечном итоге?Какие утверждения нужны?
  • Затем напишите «когда».Как мне добраться до Тогда-состояния
  • Затем напишите данные шаги.Какой контекст необходим, прежде чем я смогу выполнить предложение When?
  • Теперь пересмотрите заголовок и посмотрите, не пришли ли вы к другим сценариям, которые необходимо принять во внимание.

Я был на курсе с Джоко Адзичем несколько недель назад и получил много подобных советов. Читайте об этом здесь

...