在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,Cucmber和朋友一起行为驱动的发展”中,作者David Chelimsky写道“步骤有两种常见的风格......与你的团队讨论优点和问题”。在我的团队中,有些人已经开始使用引号,但它会使手动调用步骤更加笨拙,因为您必须在步骤步骤名称中转义引号(当这些步骤名称本身包含在引号中时)。但是,使用引号可以更清楚地了解Cucumber文本中的变量。
所以,我想知道的是:对于“正确”的风格,这里有什么样的社区共识吗?或者缺乏......
理想情况下,我想尽可能多地找到之前我们用“错误”的风格写出一百万个测试; - )
答案 0 :(得分:3)
看到没有人回复你,我决定发表评论 - 也许你会发现我的意见很有帮助。
例如,我一直在一个项目中广泛使用这两种风格,在这个项目中没有“应该这样做”。我想我更多地使用“(\ 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
希望有所帮助,我愿意讨论:)