Sadece belirli bir etikete sahip testler yapmanın bir yolu olduğunu düşünüyorum. Kimse biliyor mu?
Sadece belirli bir etikete sahip testler yapmanın bir yolu olduğunu düşünüyorum. Kimse biliyor mu?
Yanıtlar:
Belgeleri bulmak kolay değildir, ancak örnekleri bir karma ile etiketleyebilirsiniz. Örneğin.
# 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
GitHub hakkında daha fazla bilgi . (daha iyi bir bağlantıya sahip olan herkes, lütfen tavsiye edin)
(Güncelleme)
RSpec artık mükemmel bir şekilde belgelenmiştir . Ayrıntılar için --tag seçenek bölümüne bakın.
V2.6'dan itibaren bu tür bir etiket, yapılandırma seçeneği dahil edilerek daha kolay ifade edilebilir treat_symbols_as_metadata_keys_with_true_values
:
describe "Awesome feature", :awesome do
olduğu :awesome
gibi tedavi edilir :awesome => true
.
Ayrıca RSpec'in 'odaklanmış' testleri otomatik olarak çalıştıracak şekilde nasıl yapılandırılacağı için bu cevaba bakınız . Bu özellikle Guard ile iyi çalışır .
:focus
, bu da 'bağlama.pry ,
console.log`, vb. gibi istenmeyenlerin kod tabanına sürünmesini engelliyor .
rspec
programın kullanımını ve gerçek davranışını açıklayan dokümantasyon yolunda gösterebilirsiniz :) Çünkü Relish dokümanı söylemez.
--Example (veya -e) seçeneğiyle belirli bir dize içeren tüm testleri çalıştırabilirsiniz :
rspec spec/models/user_spec.rb -e "User is admin"
Bunu en çok kullanıyorum.
Sizin spec_helper.rb
:
RSpec.configure do |config|
config.filter_run focus: true
config.run_all_when_everything_filtered = true
end
ve sonra sizin özellikleriniz:
it 'can do so and so', focus: true do
# This is the only test that will run
end
Ayrıca testleri 'fit' ile odaklayabilir veya 'xit' ile hariç tutabilirsiniz, şöyle:
fit 'can do so and so' do
# This is the only test that will run
end
config.filter_run_when_matching
:focus
Ayrıca, iki nokta üst üste işaretiyle birlikte birden çok satır numarası da dizebilirsiniz:
$ rspec ./spec/models/company_spec.rb:81:82:83:103
Çıktı:
Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}
RSpec 2.4 itibariyle (sanırım) bir başa ekleyebilir f
veya x
etmek it
, specify
, describe
ve 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_method
İçinde bulunduğunuzdan config.filter_run focus: true
ve config.run_all_when_everything_filtered = true
bulunduğunuzdan emin olun spec_helper.rb
.
Daha yeni RSpec sürümlerinde, desteği yapılandırmak daha da kolay 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
Görmek:
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
Ayrıca focus: true
, varsayılan olarak
Spec / spec_helper.rb
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
Sonra sadece koş
$ rspec
ve sadece odaklanmış test çalıştırılacak
o zaman focus: true
tüm testleri kaldırdığınızda tekrar çalıştırın
Daha fazla bilgi: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
spec/spec_helper.rb
zaman dahil mi? Ya da sadece seçenek verilmemişse? Neden test modülleri var require 'spec_helber'
ve yukarıdaki koda sahip olmak , dosyayı belirterek tek bir test yapma olasılığını ortadan kaldırıyor? Bununla ilgili herhangi bir belge bulamıyorum.
spec_helper.rb
Eğer varsa daima dahil edilir --require spec_helper
de .rspec
proje kök.
Olarak çalıştırabilirsiniz rspec spec/models/user_spec.rb -e "SomeContext won't run this"
.