首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小黄瓜场景应该总是有When step吗?

小黄瓜场景应该总是有When step吗?
EN

Stack Overflow用户
提问于 2013-04-09 14:53:06
回答 4查看 9K关注 0票数 10

在小黄瓜中定义场景时,有时给定步骤和何时步骤之间没有明确的区别,即用户没有与系统进行主动交互,验证的目的是验证系统在某些情况下应该是什么样子。

请考虑以下几点:

代码语言:javascript
复制
Scenario: Show current balance
Given user is on account page
Then user should see his balance

vs

代码语言:javascript
复制
Scenario: Show current balance
When user goes to account page
Then user should see his balance

我不确定我是否会一直使用第二种变体。如果我有多个场景共享上下文"user is on account page“,其中一些有额外的用户操作,而另一些则没有,那么在我看来,将"user in account page”作为给定步骤是有效的,即使它在某些场景中可能缺少"When“。这是一个有效的方法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-09 17:18:23

从形式上和技术上讲,Cucumber/SpecFlow并不要求您编写When-step,或者更确切地说,只要按照场景中编写的顺序执行给定的/When/Then就可以了。在这一点上,你不需要一个When-step。

但是,正如Andy Waite所写的,When-step显示了您的系统从“设置”中采取的操作或事件,以达到您在Then-step中验证的新状态。在这一点上,每个测试中都应该有一个When-step (正如您所写的:否则我们在测试什么)。

这就留下了你的最后的评论;如果只验证设置(假设系统已经启动,那么数据库就像一个天真的例子一样干净)。在这种情况下,可以跳过When-step。

因此,一如既往,它归结为可读性和理解性。编写场景是为了让我们对系统行为的想法具体而清晰。使用优化的表单来理解和学习有问题的行为。

不用过多考虑这一点,我可能会猜到,一般的建议是始终使用使事件或行为非常明显和清晰的When-step。在可能的情况下,我会避免含蓄和隐藏的行为。

我希望这能帮到你。

票数 16
EN

Stack Overflow用户

发布于 2013-04-09 15:32:19

一般情况下,一个场景由3部分组成:

设置(给定)和操作( When)

  • Verification () (the When)

  • Verification()

有时设置不是必需的(或者它是隐式的)。但我想不出有哪种情况下你不需要一个动作和验证。

票数 4
EN

Stack Overflow用户

发布于 2013-04-10 08:21:37

在这里我同意Andy + Marcus的观点,但我有一些可能有用的评论。

  1. 小黄瓜功能文件应该作为系统行为的活动文档。因此,场景应该提供足够的细节,以便向开发人员和其他项目干系人(产品所有者、测试人员等)传达体现该功能的业务规则。

我认为您的问题可能是因为在阐明场景时没有从头到尾考虑这个业务规则。我不得不问别人这个问题,什么是平衡?因此,我觉得你可能至少需要一个步骤来传达这个概念-在用户可以查看他们的余额之前,他们必须有一个余额。

场景:显示当前余额假设我有余额当我转到我的帐户页面时,我应该看到我的余额

  • 设置系统状态(即任何“给定”步骤)是很重要的,以允许您清楚地测试系统是否正常工作-否则您如何确定余额实际上是正确的?您可能希望通过指定一些参数来使这一点更明确:

场景:显示当前余额假设我的余额是go 10当我转到我的账户页面时,我应该看到我的余额是go 10

  • 我不确定你使用的是哪个BDD框架,但我使用Behat,它允许你将多个小黄瓜步骤映射到一个步骤定义。I.e

用户在帐户页面用户转到帐户页面

都可以映射到将用户导航到页面的步骤定义。系统行为是相同的,区分这两者的唯一原因是为了使您的场景更具可读性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15895210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档