2011-08-11 24 views
18

Tôi đang cố chạy thử nghiệm RSpec và tôi muốn phát hiện xem thử nghiệm có bị lỗi theo phương pháp after hay không. Tôi có một cái gì đó như thế này ngay bây giờ:Phát hiện lỗi kiểm tra Rspec theo sau mỗi phương thức

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

Như bạn có thể thấy, result? chức năng là những gì tôi cần phải thay thế, để phát hiện nếu thử nghiệm thất bại hay không, và cũng để có được thông tin về các bài kiểm tra đó thất bại.

Trả lời

12

EDIT: câu trả lời này chỉ hợp lệ cho RSpec 2. cho RSpec 3 xem câu trả lời của geekazoid.

Các sau mỗi block chạy trong bối cảnh của lớp đó cho thấy example và bạn có thể phát hiện các lỗi bằng cách kiểm tra các phương pháp exception trên example thusly:

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

Ngoài câu trả lời của Daniel, trong Rspec3 phương pháp dụ là đã bị xóa (xem here để biết thêm thông tin).

Bạn sẽ phải làm một cái gì đó như thế này:

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

tôi đang tìm kiếm cách kiểm tra nếu thành công cho tất cả các ví dụ trong một nhóm trong một khối after(:context)/after(:all). Dưới đây là những gì tôi đã đưa ra:

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 
Các vấn đề liên quan