我是第一次接触黄瓜,我想就如何组织以下步骤定义征求意见。
Feature: Manage events
In order to Manage events
Organizer
wants to create new events
Background:
Given I am logged in as organizer
Scenario: Publish new event
Given I am on the new event page
When I fill in "Title" with "Rails event"
And I fill in "Start at" with "2012-5-4"
And I fill in "End at" with "2012-5-5"
And I fill in "Description" with "Bla bla"
And I check "Published"
And I press "Create Event"
Then I should see "Rails event"以下是创建歧义的步骤定义,
When /^I fill in "Start at" with "(.*?)-(.*?)-(.*?)"$/ do |year, month, day|
enter_date(:event_start_at, year, month, day)
end
When /^I fill in "End at" with "(.*?)-(.*?)-(.*?)"$/ do |year, month, day|
enter_date(:event_end_at, year, month, day)
end
When /^I fill in "(.*?)" with "(.*?)"$/ do |name, value|
fill_in name, :with => value
end
private
def enter_date(id, year, month, day)
select year, :with => "#{id}_1i"
select month, :with => "#{id}_2i"
select day, :with => "#{id}_3i"
end发生的情况是,前2个定义与最后一个定义是不明确的。但是对于开始日期和结束日期,我必须以不同的方式处理它们。我所知道的是cucumber有--guess选项可以解决这个问题。但这是最佳实践吗?
发布于 2012-05-22 12:32:35
为什么不这样做呢:
When /^I fill in "([^"]*)" with "([^"]*)"$/ do |name, value|
case(name)
when "Start at" then
parts = value.split(/-/)
enter_date(:event_start_at, parts[0], parts[1], parts[2])
when "End at" then
parts = value.split(/-/)
enter_date(:event_end_at, parts[0], parts[1], parts[2])
else
file_in name, :with => value
end
end(或者,在文本框中键入这些行的内容,因此不确定是否会按原样正确运行。)
发布于 2012-05-22 21:16:12
去掉"Start at“和"End at”周围的引号。它们将不再与您的最后一步匹配。我发现引号会造成很多歧义,所以我通常只使用引号来表示文件名或路径中包含空格的内容。当有疑问时,我发现删除引号是最佳实践,因为它消除了对Cucumber的大量猜测。
https://stackoverflow.com/questions/10695440
复制相似问题