1

私は 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>たとえば、プレースホルダーは任意の数にすることができるため、値の数は無限です。

私の仕様では、4 つの状態 (計画中、進行中、一時停止、クローズ) のいずれかを持つ契約を処理する必要があります。私の仕様では、計画済みの契約を編集できると書かれていますが、残りの 3 つの状態のいずれかを持つ契約を編集することは許可されていません。

「計画された契約の更新」という名前のシナリオと、契約のステータスがプレースホルダーであるシナリオの概要を 1 つ書くと思います。

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 つのパラメーター化されたシナリオ? それとも、可能性ごとに明示的なシナリオとしてシナリオの概要を記述する必要がありますか? インターネット上の例とは対照的に、契約のステータスは4つの可能な値によって制限されているため、わかりません.

4

1 に答える 1

1

役立つと思うことの 1 つは、Gherkin は例による仕様の単なる構文であることを覚えておくことです。ビジネス ドメインの言語で最も意味のある例を提供しようとしています。

そのため、あなたが提案していることは完全に有効です。テーブルを使用して、計画された契約が編集されたときに何が起こるかを定義するシナリオの 1 つの例と、他の状態の契約でエラーを生成する別の一連の例があります。各状態のアウトラインを展開して明示的に行うこともできます。どちらも有効で、コードベースと同じようにいつでも機能の仕様をリファクタリングできます。

ただし、ここで目指しているのは、ビジネス アナリストとの会話に使用できる文法、フレームワーク、言語を提供することです。このドキュメントを引き出して、「これが現在のシステムの仕組みです。新しい機能をサポートするには、これをどのように変更しますか?」と言うことができるようにしたいと考えています。

個人的には、表示するすべての人にできるだけ親しみやすいように見せたいので、機能で表形式とアウトライン形式を避けていますが、それでも私の機能は簡単に説明できます.

于 2012-02-08T11:17:06.297 に答える