Cucumber:引用/不引用论点的最佳实践是什么

Cucumber:引用/不引用论点的最佳实践是什么,cucumber,bdd,Cucumber,Bdd,在Cucumber中,定义定义BDD语法的步骤;例如,您的测试可能有: When I navigate to step 3 然后您可以定义一个步骤: When /^I navigate to step (\d+)$/ do |step_number| # navigate to step ${step_number} end 现在,上面所有的工作都很好(或者至少我认为是这样)。但是,您也可以这样做: When I navigate to step "3" 使用正则表达式: When

在Cucumber中,定义定义BDD语法的步骤;例如,您的测试可能有:

When I navigate to step 3
然后您可以定义一个步骤:

When /^I navigate to step (\d+)$/ do |step_number|
   # navigate to step ${step_number}
end
现在,上面所有的工作都很好(或者至少我认为是这样)。但是,您也可以这样做:

When I navigate to step "3"
使用正则表达式:

When /^I navigate to step "(\d+)"$/ do |step_number|
在“RSpec书籍:RSpec、Cuccmber和Friends的行为驱动开发”中,作者David Chelimsky写道“步骤有两种常见的风格……与您的团队讨论利弊”。在我的团队中,有一些人已经开始使用引号,但这使得手动调用步骤变得更加尴尬,因为您必须转义步骤名称中的引号(当这些步骤名称本身用引号括起来时)。但是,使用引号可以更清楚地说明变量在文本中的位置

所以,我想知道的是:对于什么是“正确的”风格,是否有任何形式的社区共识?或者缺少

  • 有没有人对这两种风格进行过利益比较
  • 有人广泛使用过这两种风格吗

理想情况下,在我们用“错误”的风格编写一百万个测试之前,我希望尽可能多地找出答案;-)

鉴于没有人回复你,我决定发表评论——也许你会发现我的意见很有帮助

例如,我在一个项目中广泛使用了这两种样式,但在这个项目中没有“应该这样做”。我想我不再使用“(\d+”样式了,因为,就像你说的:

使用引号可以更清楚地显示变量的位置

至于构建由其他步骤组成的步骤,我通常会:

Then /^I fill in my profile information with: "(.*)\/(.*)\/(.*)"$/ do |display_name, picture, description|
    And %{I fill in "user_display_name" with "#{display}"}
    And %{attach the file "#{picture}" to "user_picture"}
    And %{I fill in "user_short_description" with "#{description}"}
end

希望能有所帮助,我愿意讨论:)

我还想知道这些步骤对业务用户的可读性如何。在某些情况下,它看起来很自然(然后他应该看到“Welcome,Aslak”),但在另一些情况下,它看起来像线路噪音(当我导航到步骤“3”)。我已经听到我的业务用户:“这一步是什么?引用三个东西?”