我寫了一個功能,使用Cucumber和Capybara測試我的web應用程序的默認配置。部分功能看起來像這樣:泛化黃瓜/水豚測試
And the page has a photo labeled "Device"
And the page has a checkbox labeled "Device"
And I check "Device"
And I submit the form
Then the resulting page has no photo labeled "Device"
它工作得很好。我希望在自己的服務器上安裝並配置Web應用程序的用戶能夠運行測試以幫助確認其配置是否正確。 「Device」是用戶可以更改的默認配置文件中的一個字符串。它是數組中的一個元素,可以在配置它們的應用程序實例時添加或刪除數組。
這是合理使用這些工具還是濫用Cucumber和/或Capybara?如果這是明智的,我該怎麼做?如果這是一個壞主意,我可以用什麼工具代替它?
以下是我如何運作的。我只是不確定這是做到這一點的最佳方式。
對於這項工作,該功能將不得不尋找更多這樣的:
And the page has at least 3 photos, let us call the last one "third_photo"
在相應的步驟定義,我使用XPath拉出對應的標籤字符串的第一張照片並將其分配到存儲在類變量中的哈希對象。
And /^I the page has at least (\d*) photos, let us call the last one "([^\"]*)"$/ do |n, name|
if ! defined?(@note)
@note = Hash.new;
end
@note[name] = find(:xpath, '//ol[@id="menu"]/li[' +n+ ']/a').text;
end
後續步驟定義現在可以訪問該值,無論它是什麼。
所以,另一個特點可能是:
Then I uncheck "third_item"
以及相應的步驟定義可能是:
Then /I uncheck "([^\"]*)"/ do |item|
uncheck(@note[item])
end
但我不感覺良好。如果沒有別的,我想可能會與在步驟定義之外定義的另一個實例變量發生名稱衝突。
感覺就像我要麼做錯了,要麼我使用的是錯誤的工具。什麼是正確的方法來做到這一點?
,我不是自我感覺良好的部分是使用的類變量將值從一個步驟定義傳遞到另一個。感覺就像我打破封裝。但就我所知,它實際上是推薦的方法。 – Trott 2012-03-28 23:14:36