2010-06-17 14 views

Odpowiedz

18

Okej wymyśliłem to.

Kroki scenariuszy są oznaczone jako oczekujące, jeśli nie znaleziono ich w żadnym z plików kroków.

Scenario: New product form should have some special field 
    Given joe is logged in as an user 
    When on the new exercise page 
    Then the select field should have some special field 

Jest nawet wystarczająco przyjemnie, aby zablokować oczekujący krok.

When /^on the new exercise page$/ do 
    pending # express the regexp above with the code you wish you had 
end 
20

Inną możliwością jest tag @wip (praca w toku). Scenariusze oznaczone jako @wip nie będą domyślnie uruchamiane, ale tylko wtedy, gdy wyraźnie zażądasz ich.

@wip 
Scenario: New product form should have some special field 
    Given I still work on this feature 

W ten sposób można wykluczyć niektóre scenariusze z automatycznej kompilacji, aby nie uległy one uszkodzeniu podczas pracy z tą funkcją.

+3

Wygląda tag @wip is gone (ogórek 1.1.9) – froderik

+0

można uniknąć w przypadku braku na pracy w ogórkach z postępów za pomocą --wip flag –

55

Problem ze znacznikiem @wip, który znalazłem, polega na tym, że nie powoduje on, że zestaw testów jest żółty. Całkowicie ignoruje on funkcje wygładzania i zwykle zapominasz, że istnieją. To ugryzło mój zespół z tyłu, gdy scenariusze są oznaczone jako @wip, a następnie zapomniane. Chciałbym, żeby było lepsze rozwiązanie. Najlepszym Mam dodaje ten niestandardowy krok:

Given /^PENDING/ do 
    pending 
end 

Zamiast oznaczać prawdziwą funkcję jako oczekujące, mogę umieścić to w składzie z wiadomością, tak:

Given PENDING: we need client input 

Wtedy to pokazuje się tak:

(::) pending steps (::) 

features/example.feature:15:in `Given PENDING: we need client input' 

Oczekuje zatrzymuje łańcuch testów, ale nie przeszkadza to ogórek z dokuczliwy o jakichkolwiek niezdefiniowanych etapach, które następują w tym samym scenariuszu. Co więcej, idealnie uszkodzone i oczekujące funkcje informują o tym, że scenariusz się nie powiódł, ale tak się nie dzieje.

+0

Myślę, że użyję tego do moich własnych projektów. – sevenseacat

+2

Mam podobne pojęcie poprzedzające rodzaj "słowa kluczowego" w zestawie ogórków, w którym pracuję. Tutaj możemy wprowadzić definicję kroku jako 'Given (/^Pending (. *) /) Do | reason | w toku (powód); koniec'. Najpierw napiszesz scenariusz Korniszonu w Scenariuszu jako "* Oczekujemy, że potrzebujemy danych wejściowych klienta". Oznaczałoby to, że pozostałe kroki zostały pominięte automatycznie. – erran

0

Oprócz odpowiedzi averell można wykluczyć tagi scenariuszy podczas prowadzenia ogórka.

Jeśli @todo i @wip są tagi, które chcesz użyć do scenariuszy, które są w toku, lub oznacz oczekujących scenariusze, uruchamianie funkcji, takich jak:

cucumber --tags [email protected] --tags [email protected]

Jeśli używasz Guard zrobić coś takiego to:

guard 'cucumber', :notification => true, :all_on_start => true, 
         :cmd => "bundle exec cucumber", 
         :cli => "--tags [email protected] --tags [email protected]" do 
    watch(%r{^features/.+\.feature$}) 
    watch(%r{^features/support/.+$}) { 'features' } 
    watch(%r{^features/step_definitions/(.+)_steps\.rb$}) do |m| 
    Dir[File.join("**/#{m[1]}.feature")][0] || 'features' 
    end 
end 
Powiązane problemy