除了声明式/命令式问题之外,还要考虑一下您所描述的要求。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 会在实现之前编写,但它通常不会那样工作。我仍然发现尝试假装我正在那个理想世界中编写功能很有用。问“在我们开始开发之前我会如何写这个?” 可以帮助将实际需求(我可以输入订单)与实施细节(输入每项数据后单击下一步)分开。