场景提纲:可能值受限制的占位符
问题描述:
我对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 |
这是正确的方法吗?一个明确的情况和一个参数化?还是应该将场景大纲写成每种可能性的明确场景?我不确定,因为与互联网上的例子相比,合同的地位受到四种可能的价值限制。
答
我发现有一点有帮助的是记住小黄瓜只是一个例子规范的语法。您正尝试在业务领域语言中提供对您最有意义的示例。
因此,你提出的是完全有效的。您有一个使用表格来定义在编辑计划合同时会发生什么情况的示例,以及另一组示例,这些示例在其他州的合同中会产生错误。你也可以通过扩展每个状态的大纲明确地做到这一点。两者都是有效的,并且您可以像代码基那样重构功能规范。
然而,你打算在这里做的是提供一个语法,一个框架,一种语言,把它称为你的意愿,你可以用它来与你的业务分析师进行对话。您希望能够提取这份文件并说“现在系统如何运作,我们如何改变这一点以使其支持您的新功能?”。
就我个人而言,我现在避免使用表格和轮廓表单,因为我想让它看起来对我所展示的所有内容尽可能友好,至今我的功能仍然很容易描述。
谢谢AlSki!对已故的评论感到抱歉。关于每封电子邮件的答案的通知无效。 – Yavuz 2012-04-16 12:37:40