2012-09-10 75 views
0

我在移動和桌面版本的前端有一個完全不同的站點。使用Cucumber測試同一站點的移動和桌面版本

你不能範圍在黃瓜上的定義,當他們,所以我堅持兩種解決方案(因爲我看到)步驟:

  • 寫的每一步,與其他版本衝突,明確地說是哪個版本我
  • 成立「背景」,它告訴我什麼是我的背景,並改變所有的步驟定義以檢查此背景下

無這似乎最佳給我。

有沒有更好的/更清潔的方法來做到這一點?

回答

1

您可以使用標籤和掛鉤爲此,標記每個場景/功能與它測試網站的版本:

@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 
+0

謝謝!我結束了使用不同的解決方案,但這也是一個不錯的選擇。 – Draiken

+0

很酷,如果您將解決方案添加爲將來人們發現此問題的問題的答案,那將會很有趣! –

+0

感謝您的提示,只是做到了! – Draiken

0

我結束了使用類似的解決方案以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 

這不完全我怎麼設置背景的一部分,但你得到的圖片。

這樣做的好處是我可以擁有無​​限的上下文,這個「元」步驟將會把它們接回來。我也沒有臃腫的步驟。每一步都很簡單,只處理它自己的上下文邏輯。

缺點是對於每個非默認的上下文,我需要一個背景說明我處於不同的上下文中。

這裏我不會接受正確的答案,因爲沒有這樣的事情。你可以用不同的方法處理它,直到現在,甚至沒有關於這個的最佳做法:)

相關問題