2012-10-30 60 views
20

我有一個在黃瓜中工作正常的功能(一個.feature文件)。如何在黃瓜中測試多個背景的相同功能

該功能中所有場景的背景只是設置了一個用戶,然後以管理員身份登錄,例如,

Background: 
    Given I am logged in as a supervisor with an existing supervisee 

    ...loads of scenarios 

但是設計/應用的目標已經改變,相同的情況下都應該工作無論你登錄作爲一個主管或用戶。對於主管/用戶設計不對稱的大部分應用程序來說,情況並非如此。

有沒有任何理智的方法來避免複製和粘貼具有不同背景的整個功能文件?似乎沒有辦法對背景進行參數化(例如使用Either:或者:stanza),或者使用一系列場景來拉入外部文件。想法?

Background: 
    Given I am logged in as an existing supervisee 

    ...same loads of scenarios 

下面是一些幻想小黃瓜語法(不存在)

Background Outline: 
    Given I am logged in as a <user> 

    Backgrounds: 
    | user         | 
    | supervisor with an existing supervisee | 
    | an existing supervisee     | 

    ...loads of scenarios 

或者不同的幻想小黃瓜語法:

Background: 
    Given I am logged in as an existing supervisee 

    Include Scenarios: 
    supervisor.features 
+0

我不清楚你想做什麼改變。你能展示背景,解釋它目前展現的行爲,並描述你想如何表現? –

+0

@MarkThomas我已經添加了一個現有的背景,複製和粘貼版本,以及一些「幻想小黃瓜語法」來表明我在瞄準什麼 –

+0

@TimDiggins我知道這是一個老問題,但我很好奇無論您是否找到使用小黃瓜描述「背景概述」的方法? ...也許有人想出了一個擴展名? – muhqu

回答

4

如果是我,我只想大吃重複:

http://dannorth.net/2008/06/30/let-your-examples-flow/

另一種方法是在功能上使用標籤,指示您要針對兩個用戶組運行場景。然後使用Around鉤子爲場景運行兩次,每種類型的用戶都運行一次。

我們之前曾經討論過像Background Outlines這樣的事情,但是我們得出的結論是,實現它不值得額外的複雜性。

+0

我不希望重複,也不是因爲我是一個狂熱的狂熱者,而是因爲它確實只有一個特點,並且更具表現力將它保存在一個地方。但標籤和使用周圍的鉤子非常有表現力。很好,謝謝! –

+0

它真的有用嗎?看來,不可能多次執行一個塊。請參閱[this](http://stackoverflow.com/a/10876638/158074)回答。 – rsenna

+0

@rsenna(對延遲響應抱歉) - 我沒有真正嘗試,但留下了重複。我喜歡圍繞鉤子的想法,但它工作太多了(它看起來好像不會起作用結束)。 –