如何在用户故事场景中编写独立的THEN短语

时间:2016-07-02 11:50:00

标签: cucumber bdd gherkin

我正在尝试写一个场景:

rule breakers' list

Then在另一个故事中被定义。 所以这个故事不再独立。

我们可以将Then: The rule 'X' should be breaked by me 短语更改为:

Scenario: Registration
.....
Then: I should be loged in 

但我的方案的行为似乎不够明确。

更多例子:

Then: I should be registered

(登录属于另一种情况)vs

{{1}}

当导航是利益相关者关心的事情时,真正的问题就出现了。

我的问题:     我怎样才能有一个在这种情况下更清晰的独立场景?

2 个答案:

答案 0 :(得分:1)

如果规则破坏者的列表在别处定义,则它是场景开始的状态的一部分,因此它是“给定的”。

您的方案应该类似于:

As a user
......
Scenario: Breaking a rule
Given:I'm an active user
And:  I'm not in the rule breakers' list <- Add another given
When: I break the rule 'X'
Then: I should be added to rule breakers' list

额外的“给定”可以重用与其他场景相同的代码,如果这有用的话。或者,您可以使用快捷方式,例如将数据直接放入数据库而不是通过UI。这个场景很好,不知道该列表是如何形成的,只要在其他地方有一个例子。

答案 1 :(得分:0)

什么是“用户故事情景”?用户故事来来去去,它们不仅仅是一张纸和一些讨论。用户故事完成后,它具有无关紧要的相关性。但是,您的小黄瓜可以作为自动化测试和生活文档保留。用户故事完成后,您可以提供新功能。那是什么功能?你的小黄瓜应该准确描述,仅此而已。

在你的例子中:好的,可能有一些计划我们也将保留一份规则破坏者列表,但让我们首先关注直接的用户故事并忘记这样的列表。该列表可能是稍后的单独用户故事,或者甚至可能永远不会发生。所以问题是:我当前的用户故事有什么直接价值,用户将看到的功能是什么。如果它只是一些规则对用户的一些反馈,那就是我的小黄瓜应该反映的:给定一些先决条件当我打破规则'X'时,我应该收到这样或那样的反馈。

如果很难找到合理的小黄瓜场景,很可能你不恰当地分割你的用户故事(BTW不是问题,但最好尽早发现 - 这就是原因你正在使用bdd。)