2

如果两种情况可以同时发生,那(总是/永远)是否构成第三种情况?

我目前的想法是它们不一定是排他的(取决于场景)。如果您有两个可能同时发生的场景,如果 Given/When/Then 步骤没有隐式合并或者如果一个场景优先于另一个场景,则它们只需要第三种场景。

这个问题是在考虑本质上是一种注入形式的场景时出现的,其中对象集合被注入另一个对象(https://github.com/jameskennard/mockito-collections)。因此,给定两种情况“被测对象类有一个协作者列表”和“被测对象类有一个协作者集”。两者都可能同时发生,因此第三种情况可能是“被测对象的类别有一个列表和一组合作者”。但这感觉不对,太冗长了,我认为 Given/When/Then 步骤会被视为隐式合并。(有一种不好的感觉,我可能刚刚回答了我自己的问题)

有人有什么不同的想法吗?

4

2 回答 2

1

目前,您上面的句子描述的是状态而不是行为

在每种不同的情况下,您会得到什么不同的结果?我会期待这样的事情:

Given my CUT has five collaborators
When I do my thing with the class
Then it should use each collaborator in turn.

Given my CUT has five collaborators
And the fourth and fifth collaborators are identical
When I do my thing with the class
Then it should only use the fourth collaborator once.

这将说明列表(有序)和集合(无重复)的不同行为

如果这两个元素真正独立地有益,那么是的,它们是两个不同的场景。如果它们都必须存在才能使课程具有任何价值,我会将它们合并为一个:

Given my CUT has five collaborators
And the fourth and fifth collaborators are identical
When I do my thing with the class
Then it should use each collaborator in turn
And it should only use the fourth collaborator once.

两个同时发生的好处的一个例子可能是从 ATM 中取出现金,其中现金被交付并且账户也被借记。你不能独立完成其中任何一个。为交易提供收据将是一个单独的好处,因为ATM不需要发生它就有价值。希望这有助于区分。

于 2012-10-08T09:39:15.057 回答
1

我认为这里的关键是行为。您询问的潜在第三种情况(“被测对象类有一个列表和一组合作者”)当然是真实的,但其他两种情况已经涵盖了这种行为,所以我会说没有需要写另一个场景。

如果给定的组合会导致不同的行为,那么肯定会有第三种情况,但我相信你所拥有的两种情况涵盖了你想要定义的行为。

于 2012-10-08T16:07:11.800 回答