2012-10-30 4 views
20

Salatalıkta iyi çalışan bir özellik (bir .feature dosyası) var.Salatalıkta birden çok arka planla aynı özellik nasıl test edilir

Özellikdeki tüm senaryoların arka planı, yalnızca bir kullanıcı kurar ve ardından denetleyici olarak oturum açar, ör.

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

    ...loads of scenarios 

tasarım/uygulama hedefleri değişti ve aynı senaryolar tüm yönetici olarak veya kullanıcı olarak oturum olup olmadığını çalışmalıdır Ancak. Bu, uygulamanın denetçiler/kullanıcılar için simetrik olmadığı uygulamanın geri kalanının çoğu için geçerli değildir.

Özellik dosyasının tamamını farklı bir arkaplana kopyalamaktan ve yapıştırmaktan kaçınmanın bir yolu var mı? Arka plan parametrelerini (örn. Bir Either: Or: stanza ile) veya alternatif olarak bir senaryo yüküyle harici bir dosyayı çekmenin bir yolu gibi görünmüyor. Fikirler? İşte

Background: 
    Given I am logged in as an existing supervisee 

    ...same loads of scenarios 

bazı fantezi kornişon sözdizimi (yani mevcut değil)

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

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

    ...loads of scenarios 

Alternatif farklı fantezi Gherkin sözdizimi var: Ben olsaydım

Background: 
    Given I am logged in as an existing supervisee 

    Include Scenarios: 
    supervisor.features 
+0

Ne tür bir değişiklik yapmak istediğiniz konusunda net değilim. Arka planı gösterebilir, gösterdiği davranışları açıklayabilir ve nasıl davranmasını istediğinizi açıklayabilir misiniz? –

+0

@MarkThomas –

+0

@TimDiggins'i hedeflediğimi belirtmek için varolan bir arka planı, kopyala ve yapıştır sürümünü ve bir çift "fantezi gherkin söz dizimi" ekledim. Bu eski bir soru biliyorum, ama merak ediyorum Gherkin'i kullanarak "Arkaplan Anahatları" nı tarif etmenin bir yolunu bulup bulmadığınızı farketmediniz mi? ... belki birisi bir uzantıyla geldi? – muhqu

cevap

4

, sadece emecekti çoğaltma:

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

Alternatif olarak, senaryoların her iki kullanıcı grubuna göre senaryoları çalıştırmak istediğinizi belirten bir etiket kullanmak gerekir. Ardından, senaryoyu her kullanıcı türü için bir kez olmak üzere iki kez çalıştırmak için bir Around hook kullanın.

Daha önce Arka Plan Anahatları gibi şeylerden bahsettik, ancak geldiğimiz sonuç, onu uygulamak için ekstra karmaşıklığa değmeyeceğiydi.

+0

Yinelemeyi istemiyorum, çünkü ben bir DRY zealot'um, ama gerçekten tek bir özellik ve onu tek bir yerde tutmak için daha anlamlı olduğu için. Ama etiketleme ve bir çengel kullanma, çok etkileyici. Mükemmel teşekkürler! –

+0

Gerçekten işe yarıyor mu? Bir bloğu bir defadan fazla çalıştırmak mümkün değildir. Bakınız [this] (http://stackoverflow.com/a/10876638/158074) yanıtı. – rsenna

+0

@rsenna (geç cevap için özür dilerim) - Aslında denemedim, ancak kopyalamayı bıraktım. Çengel fikrini sevdim, ama çok fazla iş vardı (ve işe yaramaz gibi gözüküyordu. son). –