2015-04-01 92 views
3

对于小黄瓜有没有等价的“每个”陈述?在以下情况下,我正在测试的页面有多个日期字段,我想在其上运行相同的测试示例。有没有“每个”或同等语法的小黄瓜/黄瓜?

这是我想要建模的场景。

场景概要:对日期控件修改精度值

Given I have just added a record 

When I select <precision> 

    And I select <value> 

Then <date> displays in the <date type> field 

实例:

| date type | precision | value   | date      | 

    | Date 1 | Unknown | N/A    | "Unknown"    | 

    | Date 1 | Year  | <current year> | <current year>   | 

    | Date 1 | Month  | <current month> | <current month, year> | 

    | Date 1 | Day  | <current day> | <current month/day/year> | 

    | Date 2 | Unknown | N/A    | "Unknown"    | 

    | Date 2 | Year  | <current year> | <current year>   | 

    | Date 2 | Month  | <current month> | <current month, year> | 

    | Date 2 | Day  | <current day> | <current month/day/year> | 

假设有在同一页上5个日期类型字段。似乎没有必要在表格中复制/ psate 12行以覆盖日期3 - 日期5.这就是为什么我想知道是否存在“for each”等效,以便我可以为每个日期类型执行相同的示例,而无需必须在Examples表中明确显示。或者,我可以采用不同的方式来构建场景?

感谢您提供任何帮助!

回答

5

不,黄瓜不是设计时考虑到循环。黄瓜的范围是允许从用户角度定义应用程序的期望值。由于真正的用户不会“循环”,因此在黄瓜中实施它是没有意义的。

以编程方式来说,可以编写一个程序来为应用程序中的每个组合生成相同的黄瓜脚本。

1

Cucumber并不支持多列迭代,但可以使其工作。在这里,我想尝试每种路径和角色的组合:

Scenario: cannot access paths 
    When I access "path" as "role" then I should see an error 
     | /path1 | user1 | 
     | /path2 | user2 | 
     | /path3 | user3 | 

When(/^I access "path" as "role" then I should see an error$/) do |table| 
    paths, roles = table.raw.transpose.map { |e| e.reject(&:blank?) } 
    roles.each do |role| 
    step "I am logged in as #{role}" 
    paths.each do |path| 
     p "#{role} user visiting #{path}" 
     visit path 
     step 'I should see the privileges error' 
    end 
    end 
end