在编写场景时,是否有人有选择下列其中一种风格的强烈论据?
Feature: Search Product
As a customer
I want to search for a product
So that I can easily locate what I want to purchase
Scenario: Multiple Products Found (First Person Style)
Given the following products exist:
|Product |
|Normal Orange|
|Large Orange |
When I search for "orange" <---
Then the system should display the following products:
|Product |
|Normal Orange|
|Large Orange |
或者...
Scenario: Multiple Products Found (Generic Third Person Style)
Given the following products exist:
|Product |
|Normal Orange|
|Large Orange |
When the customer searches for "orange" <---
Then the system should display the following products:
|Product |
|Normal Orange|
|Large Orange |
或者...
Scenario: Multiple Products Found (Specific Person Style)
Given the following products exist:
|Product |
|Normal Orange|
|Large Orange |
When "John" searches for "orange" <---
Then the system should display the following products:
|Product |
|Normal Orange|
|Large Orange |
它们似乎都运行得很好 - 我想知道我是否错过了一个明显的陷阱,因为很多例子似乎都使用了演员的特定值(而不仅仅是输入/结果的特定值)。
我反对使用的唯一理由:
When the customer searches for "orange"
如果其他actor也可以使用相同的函数,则必须定义单独的等效步骤。
就个人而言,我认为“我”阅读得很好(尽管我觉得我不知道)。想法?
答案 0 :(得分:3)
无论哪种方式都很好,但存在细微差别。
如果结果的好处是针对用户,我有时喜欢在第一人称内容,如果是针对用户以外的其他人,则我会喜欢第三人称。
例如,你可能有一个故事:
In order to prevent bots from spamming the site
As a moderator
I want users to prove that they are human.
关联的方案可能是:
Given a user is not registered
When they try to register
Then they should be presented with a CAPTCHA
When they fill in the CAPTCHA
Then they should be successfully registered
或者:
Given I am not registered
When I try to register
Then I should be presented... what, wait, no, I shouldn't!
在这种情况下,显而易见的是,与“我应该被赠送CAPTCHA”的想法存在认知上的脱节,因为它们很烦人,没有人想要它们。将这种情况置于第三人称后,显然可能不会为该人带来好处。
我偶尔会为用户编制名称 - 例如,普通用户的Ursula Usual和管理员的Andy Admin。以这种方式使用第三人也可以用于调出不同的角色和角色。
在其他情况下,角色是相同的,但有两个不同的人在玩它。
Given Doctor Donald has filled out Priscilla Patient's prescriptions
When Doctor Diana looks for her file // <-- different doctor!
Then she should be able to find those prescriptions.
在其他actor可以使用相同功能的情况下,其角色或权限的上下文将改变行为,并且该上下文仍应包含在场景中,即使它只是隐含在其名称中。 / p>
答案 1 :(得分:2)
我认为只要故事对于开发人员和非开发人员都很清楚,我认为I
可以使用。在顶部,您已经澄清I
是customer
。我认为我们并不关心哪个特定客户正在进行搜索。
答案 2 :(得分:1)
我认为这主要取决于情景。
如果场景只涉及客户,那么“客户”可能是最合适的。
如果一个场景可能涉及除客户以外的用户类,则使用“John”(或“Jane”,如果您愿意)更通用,并且只关注一类用户。
一般来说,系统正在建立供其他人使用,所以虽然我同意第一人称(“我”)的风格很好,但不使用它可能有很好的心理原因。
当然,我可能完全糊涂了 - 我对BDD很新。