1

我有以下小黄瓜:

Given i go to the URL
And i enter the <NRIC or FIN> as NRIC / FIN
And i select the option to proceed Next
And i select the first available available Handset Color
And i select the option to proceed Next
And i enter <Full Name> as Name
When i select the option to proceed Next

" I select the option to proceed Next" 出现 3 次。这应该如何写在 Step Definitions Java 类文件中?

4

2 回答 2

3

除了声明式/命令式问题之外,还要考虑一下您所描述的要求。Scenario:出于这个原因,我发现在示例中包含 是有帮助的。在 Given 步骤中有这么多细节是非常不寻常的

您是否正在测试订单的创建(有点猜测)?如果是这样,那么您的输入/选择步骤应该是场景中的时间,例如:

Scenario: Create a new order
    Given I have gone to the URL
    When I enter the NRIC/FIN: <NRIC/FIN> 
     And I choose the first available Handset Colour
     And I enter <Full Name> as Name
    Then my new order should be confirmed (or whatever)

但是,如果您创建订单只是为了设置场景以测试其他内容,那么您可以作弊并声明该订单应该存在:

Scenario: Check the status of an order
    Given that I have created an order:
       | NRIC/FIN | Colour | Full Name |
       | xxxxx    | Red    | John Doe  |
    When I check the status of my order
    Then I should see a new order...

无论是单击屏幕来创建该订单还是将其插入数据库,这取决于自动化,重要的是当您到达何时该订单应该存在时。

在理想的 BDD 世界中,Gherkin 会在实现之前编写,但它通常不会那样工作。我仍然发现尝试假装我正在那个理想世界中编写功能很有用。问“在我们开始开发之前我会如何写这个?” 可以帮助将实际需求(我可以输入订单)与实施细节(输入每项数据后单击下一步)分开。

于 2013-12-16T16:43:00.130 回答
1

在编写黄瓜场景时,您可以采用命令式或声明式风格。我宁愿写和下面一样的东西。

Given i go to the URL
And i enter NRIC / FIN
And i select the first available Handset Color
And i enter <Full Name> as Name
Then I should see that

因此,这取决于谁将阅读您的场景。一个值得一读的链接是 必要的——声明性的

于 2013-12-16T11:14:42.817 回答