2012-10-30 14 views
20

Mam funkcję (plik .feature), które działają dobrze w ogórkach.Jak przetestować tę samą funkcję z wieloma tła w ogórku

Tło wszystkich scenariuszy w tej funkcji konfiguruje użytkownika, a następnie loguje się jako osoba nadzorująca, np.

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

    ...loads of scenarios 

Jednak design/Cele wniosku nie zmieniło i te same scenariusze powinny pracować, czy jesteś zalogowany jako przełożonego lub jako użytkownik. Nie dotyczy to większości pozostałych aplikacji, w których projekt nie jest symetryczny dla osób nadzorujących/użytkowników.

Czy istnieje jakiś rozsądny sposób na uniknięcie kopiowania i wklejania całego pliku opcji z innym tłem? Wygląda na to, że nie istnieje sposób na sparametryzowanie tła (na przykład w sekcji Either: Or:) lub alternatywnie w celu pobrania zewnętrznego pliku z mnóstwem scenariuszy. Pomysły?

Background: 
    Given I am logged in as an existing supervisee 

    ...same loads of scenarios 

Oto niektóre fantazja korniszon składnia (który nie istnieje)

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

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

    ...loads of scenarios 

Alternatywnie inna fantazja Korniszon składnia:

Background: 
    Given I am logged in as an existing supervisee 

    Include Scenarios: 
    supervisor.features 
+0

Nie jestem pewien, jaką zmianę chcesz wprowadzić. Czy potrafisz pokazać tło, wyjaśnić, jakie zachowania obecnie wystawiasz i opisać, jak chcesz się zachować? –

+0

@MarkThomas Dodałem istniejące tło, wersję do kopiowania i wklejania oraz parę "składni korrorii fantasy", aby wskazać, na co celuję przy –

+0

@TimDiggins Znam to stare pytanie, ale jestem ciekawy czy znalazłeś sposób, aby opisać "Kontury tła" za pomocą Korniszona? ... może ktoś wymyślił przedłużenie? – muhqu

Odpowiedz

4

Jeśli to było do mnie, ja po prostu ssać w górę duplikacja:

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

Alternatywą byłoby użycie znacznika na funkcji, który wskazuje, że chcesz uruchomić scenariusze w obu grupach użytkowników. Następnie użyj haka Around, aby uruchomić scenariusz dwukrotnie, raz dla każdego typu użytkownika.

Rozmawialiśmy już wcześniej o takich zagadnieniach, jak Kontury w tle, ale doszliśmy do wniosku, że nie jest to warte dodatkowej złożoności w celu jego wdrożenia.

+0

Nie chcę tego duplikowania, nie dlatego, że jestem SUALNYM zealotem, ale dlatego, że jest to naprawdę tylko jedna funkcja i bardziej ekspresyjna, aby utrzymać ją w jednym miejscu. Ale oznaczanie i używanie haka dookoła jest bardzo ekspresyjne. Perfekcyjnie, dzięki! –

+0

Czy to naprawdę działa? Wydaje się, że nie można wykonać bloku więcej niż jeden raz. Zobacz odpowiedź [this] (http://stackoverflow.com/a/10876638/158074). – rsenna

+0

@rsenna (przeprosiny za spóźnioną odpowiedź) - Tak naprawdę nie próbowałem, ale zostawiłem duplikację. Spodobał mi się pomysł haczyków, ale to było za dużo pracy (i wygląda na to, że nie działałoby to w koniec). –

Powiązane problemy