我对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 |
这是正确的方法吗?一个expicit场景和一个参数化?或者我应该将场景大纲编写为每种可能性的明确场景?我不确定,因为合同的状态受到四个可能值的限制,而不是互联网上的例子。
答案 0 :(得分:1)
我发现有一点有用,就是要记住Gherkin只是Example by Example的语法。您正尝试使用业务领域语言提供对您最有意义的示例。
因此,您提出的建议完全有效。您有一个场景示例,它使用表来定义编辑计划合同时会发生什么,以及另一组在其他状态下合同时产生错误的示例。您也可以通过扩展每个州的大纲来明确地做到这一点。两者都是有效的,您可以像代码库一样重构功能分类。
您打算在这里做的是提供语法,框架,语言,按照您的意愿调用,您可以使用它与您的业务分析师进行对话。您希望能够提取此文档并说“这是系统现在的工作方式,我们如何更改它以使其支持您的新功能?”。
就个人而言,我现在正在避免在我的功能中使用表格和大纲形式,因为我希望尽可能地让它看起来尽可能友好,而且我的功能仍然很容易描述。