2015-04-01 93 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