适用于所有情景的黄瓜步骤

时间:2010-12-22 21:42:23

标签: ruby-on-rails cucumber

我有大约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

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

我该怎么办?

3 个答案:

答案 0 :(得分:3)

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

如果您想要这样做只需要标记一个奇怪的场景,可以创建一个标记的钩子,例如{{1}},它设置一个变量,在过滤器可以在创建Ticketee帐户之前检查它。

答案 1 :(得分:1)

Tagged hook是恕我直言的好主意。

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

Given I have an account called "ticketee"

它完成所有相同的东西,但也很简洁。我从来没有在黄瓜上使用这些表,因为我通常可以在一行读取更好的东西。

答案 2 :(得分:0)

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