【问题标题】:Cucumber step for all scenarios适用于所有场景的黄瓜步骤
【发布时间】:2010-12-22 21:42:22
【问题描述】:

我有大约 30 个场景,所有小节都要求此步骤位于 Background 的顶部:

Given I have an account:
  | name     | path     |
  | ticketee | ticketee |

对于不需要这一步的,它存在或不存在并不重要,因为它是创建帐户的功能。我可以简单地为此使用不同的帐户名称和路径。

现在,我在想,与其在每个功能文件中放置 29 次,不如在 Cucumber 中使用 Before 方法,这意味着将文件放在 features/support/create_account.rb 中,该文件将包含以下代码:

Before do
  steps(%Q{
    Given I have an account:
      | name     | path     |
      | ticketee | ticketee |
  })
end

唯一的缺点是它会将某些人认为属于特征的内容提取到一个非常难以追踪的位置,并且可能不是标准的。但另一方面,它节省了很多重复。

我该怎么办?

【问题讨论】:

    标签: ruby-on-rails cucumber


    【解决方案1】:

    我会使用tagged hook,例如@with_ticketee_account。它仍然带来了一些重复,但它使场景的背景比完全隐藏起来更明显。

    如果您想这样做,那么您只需要标记一个奇怪的场景,可以创建一个标记的钩子,例如 @without_ticketee_account,它设置一个变量,您的通用前置过滤器可以在创建票务帐户之前检查该变量。

    【讨论】:

    • 从来没有想过为此使用标记的钩子,这会很好!
    【解决方案2】:

    标记的钩子恕我直言是个好主意。

    另一个想法是制作一行而不是三行。也许:

    Given I have an account called "ticketee"
    

    它做所有相同的事情,但也很简洁。我从来没有用过黄瓜的那些表,因为我通常可以在一行上做一些更好读的东西。

    【讨论】:

    • 我在 Rails 3 in Action 中使用它,代码行的长度不能超过 72 个字符。表格也是首选,因为可以很容易地向表格添加其他信息,而无需大幅更改步骤。
    • 只是减少您提供的信息量,并增加隐含的信息量......但是,长线确实会成为一个问题
    【解决方案3】:

    我会像您提议的那样将其提取到 Before 块中或使用工厂(例如 factory_girl)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多