2011-08-11 14 views
18

Próbuję uruchomić test RSpec i chcę wykryć, czy test zakończył się niepowodzeniem w metodzie after. Mam coś takiego w tej chwili:Wykryj niepowodzenie testu Rspec po każdej metodzie

after(:each) do 
    cc = ConnectController.new() 
    cc.update(<TEST-SERVER-CONTROLLER>, <TC-RESULT-ID>, result?)  
end 

Jak widać, funkcja result? to co muszę wymienić, aby wykryć, czy test się nie powiedzie, czy nie, a także uzyskać informacje na temat testu, który nie powiodło się.

Odpowiedz

12

EDYCJA: ta odpowiedź jest ważna tylko dla RSpec 2. dla RSpec 3 zobacz odpowiedź geekazoid.

After każdy biegnie blokowych w kontekście klasy, który naraża example można wykryć błędy, sprawdzając metody exception na example wygląda następująco:

after(:each) do 
    if example.exception != nil 
    # Failure only code goes here 
    end 
end 
15

Oprócz odpowiedzi Daniela, w Rspec3 metoda przykładem usunięte (patrz: here, aby uzyskać więcej informacji).

Trzeba będzie zrobić coś takiego:

after(:each) do |example| 
    if example.exception 
    # ... 
    end 
end 
0

szukałem jak sprawdzić, czy sukces dla wszystkich przykładach w grupie w after(:context)/after(:all) bloku. Oto, co wymyśliłem:

after(:all) do |example_group| 
    if example_group.class.examples.select { |ex| ex.exception }.empty? 
    # runs only if there are no failures 
    do('something') 
    end 
end 
Powiązane problemy