一个场景中的多个行为方面?

时间:2011-10-09 15:13:02

标签: bdd scenarios

当我偶然发现this question时,我试图深入了解自己的问题。根据我的理解,正在表达和测试两种不同的功能(看看两个Whens和两个Givens关于它们)。这样做是对的吗?

1 个答案:

答案 0 :(得分:3)

有两种编写方案的方法(也就是类级别的例子)。

一种是每个场景使用一个示例。

另一种方法是每个方案行为的一个方面

在这种情况下,非活动用户和活动用户的行为都会提供有价值的信息。没有这一个,这种行为毫无意义。因此将它们放在一个场景中是有道理的。这也提供了实用的好处,因为初始化场景的上下文通常需要时间。

分裂它们的一个很好的理由可能是第三种行为发挥作用(例如,您已暂停用户以及活动和非活动用户)。

如果您有单独的方面的行为,通过不同的示例说明它们通常很有价值。例如:

Given Fred bought a fridge for $100
When Fred returns the fridge
Then he should be refunded $100
And the fridge should be returned to stock.

这两个结果很明显是行为的两个不同方面,涉及不同的利益相关者 - 顾客和店主 - 所以分开它们会更有意义。

Given Fred bought a fridge for $100
When Fred returns the fridge
Then he should be refunded $100

Given Fred bought a fridge for $100
When Fred returns the fridge
Then the fridge should be returned to stock.

但是,要务实。如果它比其他方式更具可读性或可理解性,那么它应该优先于任何硬性规则。我会说我花了一些时间来学习如何有效地做到这一点,所以主要是经验。