2012-10-15 93 views
7

我在我的網站上有一個頁面,我正在嘗試測試,要求用戶在繼續操作之前至少在頁面上花費五秒鐘。水豚有沒有辦法讓我的黃瓜測試在該頁面暫停,然後等待五秒鐘,然後繼續我描述的下一步?水豚/黃瓜的睡眠功能?

回答

20

我有這個在我的步驟定義:

Given /^I wait for (\d+) seconds?$/ do |n| 
    sleep(n.to_i) 
end 

在你的特點:

Given I am on the whatever page 
And I wait for 5 seconds 
And I follow "A Link" 
# etc... 
+2

除了一般的睡眠步驟外,我還建議將睡眠添加到其範圍內的特定步驟。例如:如果步驟是「鑑於我在等待頁面上」,那麼在步驟@ blim8183中應該休眠5秒鐘。然後可以使用這個更集中的步驟。 – MrDanA

+0

完美的作品。謝謝! – blim8183

+0

如果你把這個普通的睡眠步驟放到你的步驟文件中,你可以[用其他步驟調用它](https://github.com/cucumber/cucumber/wiki/Calling-Steps-from-Step-Definitions)步驟「我等5秒鐘」。我用這個來稍微延遲許多其他步驟。 – Jazz

1

這也將是巨大的動態定義的時間單位像這樣的:

Given /^I wait for (\d+) (second|minute|hour)s?$/ do |n, unit| 
    sleep(eval("#{n.to_i}.#{unit}")) 
end 
+0

切勿使用'eval'。你只是在問問題。 '睡眠(n.to_i.send(單元))' –