2011-08-11 5 views
18

RSpec 테스트를 실행하려고 시도했으며 after 메서드에서 테스트가 실패했는지 감지하려고합니다. 지금은 이런 일이 :각 메서드 후에 Rspec 테스트 실패 감지

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

당신의 result? 기능은 내가 테스트가 실패하거나하지 않을 경우 감지하고, 또한 실패한 테스트에 대한 정보를 얻을, 교체해야 할 것입니다 볼 수 있듯이.

답변

12

편집 :이 답변은 RSpec 2에만 유효합니다. RSpec 3에 대해서는 geekazoid의 답변을 참조하십시오.

thusly 히 exampleexception 방법을 확인하여 example 당신이 감지 할 수있는 오류를 노출 클래스의 맥락에서 각 블록 실행 후 :

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

다니엘의 대답에, Rspec3의 예제 방법이었다 삭제됨 (자세한 내용은 here 참조).

당신은 이런 식으로 뭔가를해야 할 것 : 나는 after(:context)/after(:all) 블록에 그룹의 모든 예제의 성공 여부를 확인하는 방법을 찾고 있었다

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

. 다음은 내가 생각해 낸 내용입니다.

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