我在移動和桌面版本的前端有一個完全不同的站點。使用Cucumber測試同一站點的移動和桌面版本
你不能範圍在黃瓜上的定義,當他們,所以我堅持兩種解決方案(因爲我看到)步驟:
- 寫的每一步,與其他版本衝突,明確地說是哪個版本我
- 成立「背景」,它告訴我什麼是我的背景,並改變所有的步驟定義以檢查此背景下
無這似乎最佳給我。
有沒有更好的/更清潔的方法來做到這一點?
我在移動和桌面版本的前端有一個完全不同的站點。使用Cucumber測試同一站點的移動和桌面版本
你不能範圍在黃瓜上的定義,當他們,所以我堅持兩種解決方案(因爲我看到)步驟:
無這似乎最佳給我。
有沒有更好的/更清潔的方法來做到這一點?
您可以使用標籤和掛鉤爲此,標記每個場景/功能與它測試網站的版本:
@mobile
Scenario: Logging in on mobile
Given I visit the login page
@desktop
Scenario: Logging in on desktop
Given I visit the login page
使用一些鉤子設置變量,表示該網站的版本正在測試:
Before '@mobile' do
@version = :mobile
end
Before '@desktop' do
@version = :desktop
end
然後在您的步驟:
Given /^I visit the login page$/ do
if @version == :desktop
# Desktop specific code
elsif
# Mobile specific code
else
raise "Don't know what to do!"
end
end
我結束了使用類似的解決方案以Jon M.
對於同時採取的步驟,我做了一個「元」步驟,將其傳遞給正確的上下文。下面是一個例子:
When /^I log in$/ do
step %Q{I log in on #{@context}}
end
然後在另一個文件(由上下文分隔)我有:
When /^I log in on mobile$/ do
# do stuff
end
要設置的上下文中,我創建了一個支承模塊。基本上,它保持當前的背景下,也有一個默認的,你可以用一步改變:
Given /^I am on the "(.*?)" version$/ do |version|
@context = version
end
這不完全我怎麼設置背景的一部分,但你得到的圖片。
這樣做的好處是我可以擁有無限的上下文,這個「元」步驟將會把它們接回來。我也沒有臃腫的步驟。每一步都很簡單,只處理它自己的上下文邏輯。
缺點是對於每個非默認的上下文,我需要一個背景說明我處於不同的上下文中。
這裏我不會接受正確的答案,因爲沒有這樣的事情。你可以用不同的方法處理它,直到現在,甚至沒有關於這個的最佳做法:)
謝謝!我結束了使用不同的解決方案,但這也是一個不錯的選擇。 – Draiken
很酷,如果您將解決方案添加爲將來人們發現此問題的問題的答案,那將會很有趣! –
感謝您的提示,只是做到了! – Draiken