单个Gherkin场景可以有多个用户角色吗?

时间:2016-07-18 08:51:26

标签: domain-driven-design bdd gherkin

我有以下内容:

As an approver #... ?

Scenario : approve a profile
When : I approve a profile
Then : the profile owner should be notified about his profile's approval 
# (on his android device)
And : I should see the profile as a valid profile
And : guests should be able to see the profile

或者我可以说:

As an owner

Scenario : approve a profile
When : my profile is approved
Then : I should be notified about my profile's approval
...?

由于my profile is approved是一个事件,因此在此以及其他有界上下文中会产生多重后果。

一些后果是立即的,有些可能最终变得一致。 将单个事件放在多个功能中会导致管理团队,估计时间等方面的困难。

有什么建议吗? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

是的,在一个场景中让多个用户拥有不同角色是完全合适的。小黄瓜场景是用例的场景;用例有多个参与者是正常的。

我写的方案是这样的:

Scenario: User approves a profile
  Given there is a user "owner"
  And there is a user "approver"
  And there is a user "guest"
  And "owner" has a profile
  When "approver" approves the profile
  Then "owner" should be notified that their profile was approved
  And "approver" should see the profile as a valid profile
  And "guest" should see the profile as a valid profile

您可能需要更多或不同的步骤来为不同的用户提供不同的权限,但这应该会让您有所了解。

在这种情况下,批准者是最重要的角色,但是您在介绍性(“As”)部分中放置的内容取决于要素文件的范围(除此之外它包含哪些方案)。如果它涵盖了配置文件的所有用途,它将只是“作为用户”;如果它涵盖所有配置文件管理,它将是“作为配置文件管理员”;如果它仅涵盖个人资料批准,那么它将是“作为个人资料审批者”。

答案 1 :(得分:0)

使用场景Ouline并根据执行某些操作时保存的一些变量,您可以添加if或switch来进行验证。

答案 2 :(得分:0)

按依赖边界分组逻辑流1,然后按用户角色分组。

尝试解决哪一个可以由一个开发人员完成,哪个可以分成更小的部分(因此需要更短的准备时间)。

CQRS系统中,例如,当您使用最终一致性(应由需求定义)时,您可以轻松地将write要求gherkin与{{1}分开要求' s read。但是,如果您的方案需要立即一致,那么最好不要将阅读方的gherkin与写入方gherkin分开,并让一个开发人员(或一对)研究它。

我认为用户角色不太重要,但如果您的角色来自不同的BC,那么您最好为每个BC编写不同的gherkin。故事应该是独立的,gherkinstask prioritization,但我会根据技术问题优先考虑其中一些。