Saya pikir ada cara untuk menjalankan tes hanya dengan label yang diberikan. Adakah yang tahu?
159
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) :
Saya paling sering menggunakannya.
sumber
Di Anda
spec_helper.rb
:dan kemudian pada spesifikasi Anda:
Anda juga dapat memfokuskan tes dengan 'cocok' atau mengecualikan dengan 'xit', seperti:
sumber
config.filter_run_when_matching
dan itu bisa bekerja hanya dengan menambahkan:focus
contohatau Anda dapat melewati nomor baris:
rspec spec/my_spec.rb:75
- nomor baris dapat menunjuk ke satu spec atau konteks / menggambarkan blok (menjalankan semua spesifikasi di blok itu)sumber
Anda juga dapat merangkai beberapa nomor baris bersamaan dengan titik dua:
Keluaran:
sumber
Pada RSpec 2,4 (saya kira) Anda dapat tambahkan sebuah
f
ataux
untukit
,specify
,describe
dancontext
: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
danconfig.run_all_when_everything_filtered = true
di Andaspec_helper.rb
.sumber
Dalam versi RSpec yang lebih baru, lebih mudah untuk mengkonfigurasi dukungan
fit
: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
sumber
Anda juga dapat menjalankan spesifikasi yang
focus: true
secara defaultspec / spec_helper.rb
Maka jalankan saja
dan hanya tes fokus yang akan dijalankan
maka ketika Anda menghapus
focus: true
semua tes, jalankan lagiInformasi lebih lanjut: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
sumber
spec/spec_helper.rb
selalu disertakan? Atau hanya jika tidak ada opsi yang diberikan? Mengapa modul tes memilikirequire '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"
.sumber