Saya pikir ada cara untuk menjalankan tes hanya dengan label yang diberikan. Adakah yang tahu?
Saya pikir ada cara untuk menjalankan tes hanya dengan label yang diberikan. Adakah yang tahu?
Jawaban:
Tidak mudah menemukan dokumentasinya, tetapi Anda dapat memberi tag contoh dengan hash. Misalnya.
# 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
Info lebih lanjut tentang GitHub . (siapa pun yang memiliki tautan yang lebih baik, mohon saran)
(memperbarui)
RSpec sekarang didokumentasikan dengan sangat baik di sini . Lihat bagian --tag opsi untuk detailnya.
Pada v2.6 jenis tag ini dapat diekspresikan lebih sederhana dengan memasukkan opsi konfigurasi treat_symbols_as_metadata_keys_with_true_values
, yang memungkinkan Anda melakukannya:
describe "Awesome feature", :awesome do
di mana :awesome
diperlakukan seolah-olah itu :awesome => true
.
Lihat juga jawaban ini untuk cara mengonfigurasi RSpec agar secara otomatis menjalankan tes 'terfokus'. Ini bekerja sangat baik dengan Guard .
:focus
, yang juga mencegah hal-hal yang tidak diinginkan seperti 'binding.pry ,
console.log`, dll. dari merayap masuk ke basis kode.
rspec
program :) Karena dokumen Relish tidak.
Anda dapat menjalankan semua tes yang berisi string tertentu dengan opsi --example (atau -e) :
rspec spec/models/user_spec.rb -e "User is admin"
Saya paling sering menggunakannya.
Di Anda spec_helper.rb
:
RSpec.configure do |config|
config.filter_run focus: true
config.run_all_when_everything_filtered = true
end
dan kemudian pada spesifikasi Anda:
it 'can do so and so', focus: true do
# This is the only test that will run
end
Anda juga dapat memfokuskan tes dengan 'cocok' atau mengecualikan dengan 'xit', seperti:
fit 'can do so and so' do
# This is the only test that will run
end
config.filter_run_when_matching
dan itu bisa bekerja hanya dengan menambahkan :focus
contoh
Anda juga dapat merangkai beberapa nomor baris bersamaan dengan titik dua:
$ rspec ./spec/models/company_spec.rb:81:82:83:103
Keluaran:
Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}
Pada RSpec 2,4 (saya kira) Anda dapat tambahkan sebuah f
atau x
untuk it
, specify
, describe
dan 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
Pastikan untuk memiliki config.filter_run focus: true
dan config.run_all_when_everything_filtered = true
di Anda spec_helper.rb
.
Dalam versi RSpec yang lebih baru, lebih mudah untuk mengkonfigurasi dukungan 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
Lihat:
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
Anda juga dapat menjalankan spesifikasi yang focus: true
secara default
spec / spec_helper.rb
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
Maka jalankan saja
$ rspec
dan hanya tes fokus yang akan dijalankan
maka ketika Anda menghapus focus: true
semua tes, jalankan lagi
Informasi lebih lanjut: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
spec/spec_helper.rb
selalu disertakan? Atau hanya jika tidak ada opsi yang diberikan? Mengapa modul tes memiliki require 'spec_helber'
, dan tidak memiliki kode di atas menghilangkan kemungkinan menjalankan tes tunggal dengan menentukan file? Saya tidak dapat menemukan dokumentasi tentang ini.
spec_helper.rb
selalu disertakan jika Anda memiliki --require spec_helper
di .rspec
dalam root proyek.
Anda dapat menjalankan sebagai rspec spec/models/user_spec.rb -e "SomeContext won't run this"
.