Câu trả lời:
Không dễ tìm tài liệu, nhưng bạn có thể gắn thẻ các ví dụ bằng hàm băm. Ví dụ.
# spec/my_spec.rb
describe SomeContext do
it "won't run this" do
raise "never reached"
end
it "will run this", :focus => true do
1.should == 1
end
end
$ rspec --tag focus spec/my_spec.rb
Thêm thông tin về GitHub . (bất cứ ai có liên kết tốt hơn, xin vui lòng tư vấn)
(cập nhật)
RSpec bây giờ là tài liệu tuyệt vời ở đây . Xem phần tùy chọn --tag để biết chi tiết.
Kể từ v2.6, loại thẻ này có thể được thể hiện thậm chí đơn giản hơn bằng cách bao gồm tùy chọn cấu hình treat_symbols_as_metadata_keys_with_true_values
, cho phép bạn thực hiện:
describe "Awesome feature", :awesome do
nơi :awesome
được đối xử như thể nó là :awesome => true
.
Đồng thời xem câu trả lời này để biết cách định cấu hình RSpec để tự động chạy các bài kiểm tra 'tập trung'. Điều này đặc biệt tốt với Guard .
:focus
, điều này cũng ngăn chặn các điều không mong muốn như 'bind.pry ,
console.log`, v.v. khỏi leo vào codebase.
rspec
chương trình :) Bởi vì tài liệu Relish không có.
Bạn có thể chạy tất cả các bài kiểm tra có chứa một chuỗi cụ thể với tùy chọn --example (hoặc -e) :
rspec spec/models/user_spec.rb -e "User is admin"
Tôi sử dụng nó nhiều nhất.
Trong của bạn spec_helper.rb
:
RSpec.configure do |config|
config.filter_run focus: true
config.run_all_when_everything_filtered = true
end
và sau đó về thông số kỹ thuật của bạn:
it 'can do so and so', focus: true do
# This is the only test that will run
end
Bạn cũng có thể tập trung kiểm tra với 'phù hợp' hoặc loại trừ với 'xit', như vậy:
fit 'can do so and so' do
# This is the only test that will run
end
config.filter_run_when_matching
có thể hoạt động chỉ bằng cách thêm :focus
vào ví dụ
Bạn cũng có thể xâu chuỗi nhiều số dòng cùng với dấu hai chấm:
$ rspec ./spec/models/company_spec.rb:81:82:83:103
Đầu ra:
Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}
Tính đến RSpec 2.4 (tôi đoán), bạn có thể thêm vào trước một f
hoặc x
để it
, specify
, describe
và context
:
fit 'run only this example' do ... end
xit 'do not run this example' do ... end
http://rdoc.info/github/rspec/rspec-core/RSpec/Core/Examplegroup#fit- class_method http://rdoc.info/github/rspec/rspec-core/RSpec/Core/Examplegroup#xit- class_met
Hãy chắc chắn để có config.filter_run focus: true
và config.run_all_when_everything_filtered = true
trong của bạn spec_helper.rb
.
Trong các phiên bản mới hơn của RSpec, việc cấu hình hỗ trợ thậm chí còn dễ dàng hơn fit
:
# spec_helper.rb
# PREFERRED
RSpec.configure do |c|
c.filter_run_when_matching :focus
end
# DEPRECATED
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
Xem:
https://relishapp.com/rspec/rspec-core/docs/filtering/filter-run-when-matching
https://relishapp.com/rspec/rspec-core/v/3-7/docs/configuration/run-all-when-everything-filtered
Ngoài ra, bạn có thể chạy thông số kỹ thuật có focus: true
mặc định
spec / spec_rcper.rb
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
Sau đó, chỉ cần chạy
$ rspec
và chỉ kiểm tra tập trung sẽ được chạy
sau đó khi bạn loại bỏ focus: true
tất cả các bài kiểm tra tốt sẽ được chạy lại
Thêm thông tin: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
spec/spec_helper.rb
luôn luôn bao gồm? Hoặc chỉ khi không có lựa chọn được đưa ra? Tại sao các mô-đun kiểm tra có require 'spec_helber'
và không có đoạn mã trên loại bỏ khả năng chạy thử nghiệm đơn lẻ bằng cách chỉ định tệp? Tôi không thể tìm thấy bất kỳ tài liệu về điều này.
spec_helper.rb
luôn được bao gồm nếu bạn có --require spec_helper
trong .rspec
root dự án.
Bạn có thể chạy như rspec spec/models/user_spec.rb -e "SomeContext won't run this"
.