2015-05-21 17 views
9

Phần Mẹo nâng cao của trang Serverspec hiển thị ví dụ về thử nghiệm nhiều máy chủ có cùng một bộ thử nghiệm. Tôi đã xây dựng một ví dụ của riêng mình (https://gist.github.com/neilhwatson/81249ad393800a76a8ad), nhưng có vấn đề.Thử nghiệm nhiều máy chủ có cùng kiểm tra bằng cách sử dụng serverpec

Vấn đề đầu tiên là các bài kiểm tra dừng lại ở lần thất bại đầu tiên thay vì tiến hành thông qua lô và giữ lại kiểm đếm. Thứ hai là đầu ra thất bại không cho biết máy chủ nào xảy ra lỗi. Tôi có thể làm gì để khắc phục những vấn đề này và tạo báo cáo cuối cùng cho tất cả các máy chủ?

Trả lời

2

Đối với số đầu tiên, ServerSpec theo mặc định sẽ chạy tất cả các thử nghiệm của bạn. Tuy nhiên, vì bạn có một vòng lặp thực thi tác vụ Rake cho mỗi môi trường, môi trường đầu tiên có lỗi làm cho tác vụ thất bại và vì vậy một ngoại lệ được nâng lên và phần còn lại của tác vụ của bạn không chạy.

Tôi đã chia sẻ ý kiến ​​của bạn và cập nhật Rake task to surround it with a begin/rescue.

... 
begin 
    desc "Run serverspec to #{host}" 
    RSpec::Core::RakeTask.new(host) do |t| 
    ENV['TARGET_HOST'] = host 
    t.pattern = "spec/base,cfengine3/*_spec.rb" 
    end 
rescue 
end 
... 

Đối với vấn đề thứ hai, nó không giống như ServerSpec sẽ ra mà môi trường thử nghiệm đang chạy trong. Nhưng kể từ khi Gist cập nhật cho thấy máy chủ được thiết lập trong spec_helper.rb chúng ta có thể sử dụng để add an RSpec configuration rằng thiết lập một after(:each) và chỉ xuất ra các lỗi host. Những thay đổi mã có liên quan đang ở trong một fork of the gist, nhưng về cơ bản bạn chỉ cần đoạn dưới đây trong spec_helper.rb của bạn:

RSpec.configure do |c| 
    c.after(:each) do |example| 
    if example.exception 
     puts "Failed on #{host_run_on}" 
    end 
    end 
end 
+0

Closer, nhưng tôi vẫn không thể nói những gì thất bại chủ nhà xảy ra trên. Gist mới: https://gist.github.com/neilhwatson/1d41c696102c01bbb87a –

+0

Lỗi mới: 'example' không có sẵn trong một ví dụ (ví dụ: khối' it') hoặc từ các cấu trúc chạy trong phạm vi của ví dụ (ví dụ 'trước',' let', v.v.). Nó chỉ có sẵn trên một nhóm ví dụ (ví dụ: khối 'mô tả' hoặc' bối cảnh'). –

+0

Ahh, xấu của tôi, đó là từ RSpec 2, không phải RSpec 3. Nó được thực hiện theo cách này trong RSpec 3: http://stackoverflow.com/a/26164289/238292. Tôi sẽ cập nhật phản hồi. –

Các vấn đề liên quan