Tôi có một kịch bản kết thúc tốt đẹp xung quanh các thử nghiệm trong RSpec 3.4.4 và khiến chúng hết thời gian chờ sau mười giây.Tôi làm cách nào để đặt siêu dữ liệu RSpec toàn cầu?
TIMEOUT = 10
RSpec.configure do | config |
config.around do |example|
timeout = Float(example.metadata[:timeout]) rescue TIMEOUT
begin
Timeout.timeout(timeout) { example.run }
rescue Timeout::Error
skip "Timed out after #{timeout} seconds"
end
end
end
Kịch bản này là ở một vị trí trung tâm - ~/lib/spec_helper.rb
- và là require
d bởi spec_helper
s trong kho của tôi.
Tôi muốn để có thể cấu hình example.metadata[:timeout]
tại một mức kho rộng, để có tất cả thời gian thông số kỹ thuật của nó ra (ví dụ) sau hai giây, hoặc (ví dụ khác) không phải ở tất cả.
Tôi đã thử đặt tùy chọn này làm tùy chọn trong .rspec
- một giải pháp lý tưởng cho tôi - nhưng tất nhiên nó không nhận ra các tùy chọn tùy chỉnh như vậy. Tôi sẽ mong đợi dòng lệnh để làm chính xác điều tương tự.
Có cách nào để đặt siêu dữ liệu cho tất cả các ví dụ trong bộ thử nghiệm không?
Trên thực tế, như bạn [ban đầu] đã viết nó, thiết lập thời gian chờ bằng không sẽ dừng ví dụ từ chạy ở tất cả. May thay, tất cả những gì bạn cần làm là loại bỏ mệnh đề 'trừ', vì' Timeout.timeout (0) {...} 'sẽ không hết thời gian chờ. – PJSCopeland
ah tôi đã không thực sự chắc chắn về điều đó ... Tôi sẽ thay đổi câu trả lời – David